API Drag 사용자 메뉴얼
  • 시작하기
    • 기본 개념 이해하기
      • Coding 기초
      • JSON 구조
      • 아이템 블록
      • 메모리 구조
      • 자격증명
    • Flow 작성
    • 데이터 컨트롤
    • 테스트 및 디버그
    • 스케쥴링
    • Agency
  • BASIC ITEMS
    • Controls
      • Branch
      • Loop
      • Assign
    • Input Data
      • Google Sheets
      • CSV File
    • Output Data
      • Google Sheets
      • Text File
      • Email
    • Web Service
      • Http Request
      • Http In
      • Http Response
      • Http Redirect
  • KAKAO API
    • API References
      • 카카오 로그인
        • 로그인
        • 카카오 로그아웃
        • 서비스 로그아웃
        • 연결하기
        • 연결끊기
        • 토큰정보
        • 토큰발급
        • 토큰 권한검증
        • 토큰갱신
        • 사용자 정보
        • 사용자 목록
        • 여러 사용자 정보
        • 사용자 정보 저장하기
        • 동의 철회하기
        • 동의한 약관
        • 배송지 가져오기
      • 카카오톡 소셜
        • 내 프로필 조회
        • 친구 목록 조회
      • 메시지
        • 나에게 보내기
        • 친구에게 보내기
        • 나에게 템플릿 보내기
        • 친구에게 템플릿 보내기
        • 나에게 스크랩 보내기
        • 친구에게 스크랩 보내기
      • 푸시 알림
        • 푸시 토큰 등록하기
        • 푸시 토큰 보기
        • 푸시 토큰 삭제하기
        • 푸시 알림 보내기
      • 톡캘린더
        • 목록 가져오기
        • 캘린더 생성하기
        • 캘린더 수정하기
        • 캘린더 삭제하기
        • 일정 생성하기
        • 일정목록 가져오기
        • 일정 상세조회
        • 일정 수정하기
        • 일정 삭제하기
        • 공개일정 생성하기
        • 공개일정 목록 가져오기
        • 공개일정 상세조회
        • 공개일정 수정하기
        • 공개일정 삭제하기
        • 공개일정 캘린더에 추가하기
        • 구독가능 캘린더 가져오기
        • 구독하기
        • 구독 해지하기
        • 구독 게스트 일정 수정하기
        • 공휴일 및 주요 기념일
      • 로컬
        • 주소 검색하기
        • 좌표로 행정구역정보 받기
        • 좌표로 주소 변환하기
        • 좌표계 변환하기
        • 키워드로 장소 검색
        • 카테고리로 장소 검색
      • 카카오스토리
        • Page 64
        • Page 63
        • Page 62
        • Page 61
        • Page 60
        • Page 59
        • Page 58
        • Page 57
        • Page 56
        • Page 55
      • 카카오톡 채널
        • Page 69
        • Page 68
        • Page 67
        • Page 66
        • Page 65
      • 인공지능 포즈
        • Page 72
        • Page 71
        • Page 70
      • 인공지능 KoGPT
        • Page 73
      • 인공지능 Karlo
        • Page 76
        • Page 75
        • Page 74
      • Daum 검색
        • Page 82
        • Page 81
        • Page 80
        • Page 79
        • Page 78
        • Page 77
  • NAVER API
    • API References
      • 검색
        • Page 96
        • Page 95
        • Page 94
        • Page 93
        • Page 92
        • Page 91
        • Page 90
        • Page 89
        • Page 88
        • Page 83
        • Page 84
        • Page 85
        • Page 86
        • Page 87
      • 로그인
        • Page 103
        • Page 102
        • Page 101
        • Page 100
        • Page 99
        • Page 98
        • Page 97
      • Papago 번역
        • Page 106
        • Page 104
        • Page 105
      • CLOVA 얼굴인식
        • Page 108
        • Page 107
      • 검색어트렌드
        • Page 109
      • 쇼핑인사이트
        • Page 117
        • Page 116
        • Page 115
        • Page 114
        • Page 113
        • Page 112
        • Page 111
        • Page 110
      • 캡차
        • Page 123
        • Page 122
        • Page 121
        • Page 120
        • Page 119
        • Page 118
      • 캘린더
        • Page 124
      • 카페
        • Page 126
        • Page 125
      • 단축 URL
        • Page 127
  • GOOGLE API
    • API References
      • Login
        • 로그인
        • 토큰발급
        • 토큰취소
        • 토큰갱신
        • 토큰 권한검증
        • 사용자 정보
      • Contact
        • 연락처그룹 목록
        • 연락처그룹 정보
        • 연락처그룹 만들기
        • 연락처그룹 삭제
        • 연락처그룹 수정
        • 그룹 내 연락처 등록
        • 그룹 내 연락처 등록해지
        • 기타연락처 목록
        • 기타연락처 검색
        • 기타연락처를 내연락처로 복사
        • 연결된 연락처 목록
        • 연락처 만들기
        • 연락처 보기
        • 연락처 삭제
        • 연락처 사진 삭제
        • 연락처 검색
        • 연락처 업데이트
        • 연락처 사진 업데이트
        • 연락처 일괄삭제
      • Calendar
        • 캘린더 목록
        • 캘린더 목록 정보
        • 캘린더 목록 삽입
        • 캘린더 목록 패치
        • 캘린더 목록 업데이트
        • 캘린더 목록 삭제
        • 캘린더 정보
        • 캘린더 삽입
        • 캘린더 패치
        • 캘린더 업데이트
        • 기본 캘린더 일정 지우기
        • 보조 캘린더 삭제
        • 이벤트 목록
        • 이벤트 정보
        • 이벤트 복사
        • 이벤트 추가
        • 반복 이벤트 목록
        • 이벤트 빠른추가
        • 이벤트 패치
        • 이벤트 수정
        • 이벤트 이동
        • 이벤트 삭제
        • 액세스 목록
        • 액세스 정보
        • 액세스 추가
        • 액세스 패치
        • 액세스 수정
        • 엑세스 삭제
        • 캘린더 채널 중지
        • 캘린더 색상 정보
        • 캘린더 Free/Busy 정보
Powered by GitBook
On this page
  • Map
  • Array
  • 복합 데이터 구조
  • JSON 데이터 활용하기
  1. 시작하기
  2. 기본 개념 이해하기

JSON 구조

JSON 은JavaScript Object Notation의 약자입니다. JSON은 Javascript 데이터의 구조를 쉽게 표현하기 위한 문자 기반의 표준 포맷입니다. JSON은 다양한 형태의 데이터를 일관된 규격에 맞게 정리하기 쉬우며, 이러한 데이터를 묶어서 저장하거나 전송하기 편리하기 때문에 JavaScript 의 핵심 데이터 구조로 활용되고 있습니다.

API Drag 의 메모리 구조는 JSON의 구조로 운영이 되기 때문에, 아래 설명을 잘 읽고 이해해 주세요.

Map

JSON 구조에서 가장 중요한 개념입니다.

Map을 간단히 설명드리자면 출석부와 같습니다. 선생님이 출석부에서 여러분의 이름을 호명하면, 여러분은 자동으로 "네!" 하고 대답을 할 것입니다. Map 데이터구조에도 이름표가 있어서 호출만 하면 자동으로 이름표에 연결되어 있는 데이터가 튀어나옵니다.

아래 Map 예제를 보겠습니다.

let product = {
    "color":"red",
    "width":200,
    "height":150,
    "price":35000,
    "model":"mod-0001",
};

위에서 보시는 것과 같이 product 라는 변수에서 원하는 이름표 즉, color 를 호출하면 "red" 라는 값이 즉시 튀어나오게 되어 있습니다. 여기에서 color 는 Key 가 되고 red 는 Value가 됩니다. 이러한 Key와 Value 가 한 쌍을 이룬 데이터 구조를 Map 이라고 합니다.

Array

JSON은 Map 구조로 부터 시작을 하지만 그 내부에 Array 가 포함될 수 있으며, 자주 활용되기 때문에 같이 설명을 드리겠습니다.

Array는 순서대로 데이터가 나열되어 묶인 구조입니다. 그리고 데이터를 꺼내오기 위해서는 데이터가 위치한 Index를 활용합니다. Map이 이름표를 이용해서 호출했다면 Array는 번호를 호출하는 방식으로 이해하시면 쉬울 것 같습니다.

코딩에서 문법적으로 Array는 아래와 같이 사용합니다.

let productList = [
    "prod-0001",
    "prod-0002",
    "prod-0003",
    "prod-0004",
    "prod-0005"
];

위 예제를 보시면 문자열 값의 연속이라는 것을 아실 수 있습니다. 이러한 데이터 구조에서 "prod-0003" 을 찾기 위해서는 productList[2] 로 값을 꺼내올 수 있습니다. 하지만 우리가 목록 내부에 어떤 값이 들어있는지 알 수 없기 때문에, 반복문을 이용해서 Index 0번 부터 마지막 Index 까지 반복 확인하는 작업을 통해 원하는 값이 들어있는 Index를 확인해야 합니다.

"prod-0003"을 찾는 코드를 한번 보시겠습니다.

for(let i=0; i<productList.length; i++){
    if(productList[i] == "prod-0003"){
        console.log("Find prod-0003");
        break; //원하는 값을 찾았으니 반복문 블록 밖으로 이동.
    }
}

복합 데이터 구조

JSON은 처음 시작을 Map으로 하지만 그 내부에 담을 수 있는 값은 다양합니다.

Map의 Key는 문자열이어야 하지만 Value에 해당하는 부분은 string, number, boolean, Map, Array 등 다양한 데이터가 위치할 수 있습니다.

아래 JSON의 다양한 구조를 보겠습니다.

let products = {
    "pencil":{
        "model-1":{
            "color":"red",
            "price":2000,
            "stocks":[
                {"serial":"a-001", "stock-date":"2023.04.01"},
                {"serial":"a-002", "stock-date":"2023.04.01"},
                {"serial":"a-003", "stock-date":"2023.04.01"}
            ]
        },
        "model-2":{
            "color":"orange",
            "price":2300,
            "stocks":[
                {"serial":"bc-001", "stock-date":"2023.03.10"},
                {"serial":"bc-002", "stock-date":"2023.03.10"},
                {"serial":"bc-003", "stock-date":"2023.03.10"}
            ]
        }
    },
    "remover":{
    ...
    },
    "note":{
    ...
    }
}

위 예제를 보시면 Map 안에 Array가 위치하고, Array 안에 Map이 위치하는 복잡한 구조를 하고 있습니다.

하지만 이런 복잡한 구조를 가장 잘 표현하고 쉽게 사용할 수 있도록 하는 것이 JSON 입니다.

JSON 데이터 활용하기

이번에는 JSON 데이터를 이용하여 값을 꺼내오고 변경하는 방법을 알아보겠습니다.

Map 구조 활용하기

Map 구조는 키와 값의 쌍으로 구성된다고 설명하였습니다. 위 예제코드에서 products 를 활용해서 값을 가져오고 새로운 값을 넣는 방법을 알아보겠습니다.

let products = ...

console.log(products.pencil.model-1.color); // red 로 출력됨

products.pencil.model-1.color = "yellow"; // color를 yellow 로 바꿈

console.log(products.pencil.model-1.color); // yellow 로 출력됨

products.pencil.model-1.length = 20; // 길이 라는 새로운 Map을 추가함

console.log(products.pencil.model-1.length); // 20 이 출력됨

Array 구조 활용하기

이번에는 어떻게 Array 에 값을 넣고 빼는지 알아보겠습니다.

let products = ...

console.log(products.pencil.model-2.stocks[0].stock-date); // 2023.04.01 가 출력됨

products.pencil.model-2.stocks[0].stock-date = "2023.01.15" // stock-date 를 변경

console.log(products.pencil.model-2.stocks[0].stock-date); // 2023.01.15 가 출력됨

products.pencil.model-2.stocks.push({"serial":"a-004", "stock-date":"2023.04.05"});
//새롭게 Array가 추가됨

console.log(products.pencil.model-2.stocks[3].stock-date); // 2023.04.05 가 출력됨
PreviousCoding 기초Next아이템 블록

Last updated 2 years ago