코딩왕랄프👊🏻

[JSON] JSON 정리 본문

카테고리 없음

[JSON] JSON 정리

hyerm_2 2021. 7. 8. 09:03
반응형
SMALL
JSON?

JavaScript Object Notation

좀 더 쉽게 데이터 교환, 저장 위해 만들어진 텍스트 기반 데이터 교환 방식

JavaScript에서 객체 만들때 사용하는 표현식

특정 언어에 종속 X

문자열 전송 받은 후 바로 parsing => 빠른 처리 속도

 

{
    "name": "식빵",
    "family": "웰시코기",
    "age": 1,
    "weight": 2.14
}

XML?

Extensible Markup Language

데이터 저장, 전달

XML DOM(Document Object Model) 이용해 해당 문서에 접근

 

<dog>
    <name>식빵</name>
    <family>웰시코기<family>
    <age>1</age>
    <weight>2.14</weight>
</dog>

 

 

JSON 문법

  • Javascript의 객체 표기법에서 Literal과 Property를 표현하는 방법만 사용
Literal
=> 값 자체
Object
=> name, value로 구성된 property의 정렬되지 않은 집합

 

JSON 구조

JSON Data
=> number, string, boolean, object, array, NULL
JSON Object
=> { name1 : value1,  name2 : value2}
{
    "name": "식빵",
    "family": "웰시코기",
    "age": 1,
    "weight": 2.14
}​
JSON Array
=> ArrayName : [ { name1 : value1, name2 : value2 } , { name3 : value3 }, { name4 : value4} ]
"dog": [
    {"name": "식빵", "family": "웰시코기", "age": 1, "weight": 2.14},
    {"name": "콩콩", "family": "포메라니안", "age": 3, "weight": 2.5},
    {"name": "젤리", "family": "푸들", "age": 7, "weight": 3.1}
]​


 

JSON 타입

 

String
=> 큰 따옴표만 사용 가능
=> Escape Sequence 

\b 백스페이스
\f 폼 피드(form feed)
\n 개행
\r 캐리지 리턴(carriage return)
\t 탭(tab)
\" 큰따옴표
\/ 슬래시
\\ 역슬래시
\uHHHH 16진수 네 자리로 표현된 유니코드 문자

 

Array
=> [] 로 표현
=> 배열/객체 차이점 : 배열은 Data 값의 집합, 객체는 Property의 집합

 

JSON 스키마

  • 적법한 JSON 데이터의 형식을 기술한 문서
스키마 Validation
=> 데이터 타입 정확? 필수 데이터 포함 ? 데이터가 원하는 범위 내에?
=> Validation keywords
 
type 유효한 데이터의 타입을 명시함.
properties 유효한 데이터 이름과 값의 쌍들을 명시함.
required 명시한 배열의 모든 요소를 프로퍼티로 가지고 있어야만 유효함.
minimum 최솟값 이상의 숫자만 유효함.
maximum 최댓값 이하의 숫자만 유효함.
multipleOf 명시한 숫자의 배수만 유효함.
maxLength 명시한 최대 길이 이하의 문자열만 유효함.
minLength 명시한 최소 길이 이상의 문자열만 유효함.
pattern 명시한 정규 표현식에 해당하는 문자열만 유효함.

 

{

    "title": "강아지 스키마",

    "description": "이 스키마는 강아지에 관한 데이터를 검증하기 위해 작성된 스키마임.",
    "type": "object",
    "properties": {
        "name": {"type": "string"},
        "family": {"type": "string"},
        "age": {"type": "integer"},
        "weight": {"type": "number"},
        "owner": {
            "type": "object",
            "properties": {
                "ownerName": {"type": "string"},
                "phone": {"type": "string"}
            }
        }
    }
}

 

숫자 검증
=> 정수 : "integer", 숫자 : "number", 배수 : "multipleOf"
=> 범위 :
{
    "type": "number",
    "minimum": 1,
    "maximum": 10,
    "exclusiveMaximum": true
}

 

 

반응형
LIST