JSON이란
- 데이터 저장, 전송을 위한 경량의 DATA 교환 형식
- 사람이 읽을 수 있는 텍스트 기반의 데이터 교환 표준
JSON의 특징
- Java Script를 확장하여 만들어짐
- Java Script의 객체 표기법을 따름
- 사람과 기계 모두 읽기 편하게 고안
- 프로그래밍 언어와 운영체제에 독립적
JSON 구조
- name/value 형태의 쌍
<value 값>
- 숫자(number) - 정수, 실수, 지수
- 문자열(string) - 일련의 연속된 문자의 집합, "" 안에 나열
- 불린(boolean) - 참(true)과 거짓(false) 표현
- 객체(object) - name/value로 구성된 프로퍼티의 정렬되지 않은 집합({ }로 묶여있음) ,쉼표(,)를 사용하여 여러 개 프로퍼티 사용 가능
- 배열(array) - 여러 데이터가 순서를 가지고 나열된 집합([ ]로 묶여있음), 쉼표(,)를 사용하여 여러 개의 데이터 나열 가능
- NULL - 아무런 값도 가지고 있지 않은 빈 값 null로 표현
-JSON의 데이터는 쉼표로 나열
-객체(Object)는 {}로 표현
-배열(Array)은 []로 표현
JSON 장점
- 내용이 함축적으로 최소한의 정보만 가지기 때문에 용량이 적고 속도가 빠름
- 언어에 독립적임
- 사용이 쉬움
JSON 단점
- 내용이 함축적이기 때문에 의미 파악이 어려울 수 있음
- 경량의 데이터 교환 형식이기 때문에 대용량급의 데이터 송수신엔 부적합함
JSON 스키마
-JSON 데이터를 전송받을 때 데이터가 적합한 형태의 데이터인지 확인하기 위한 방법
-스키마 검증
- 데이터 타입이 정확한가
- 필수로 받아와야 하는 데이터가 포함되었는가
- 데이터가 원하는 범위 안에 있는가
{
"title" : "스키마",
"description": "데이터 검증을 위한 스키마",
"type":"object",
"properties":{
"name":{"type":"string"},
"age":{"type":"integer"},
"number":{"type":"integer"},
"adress":{ "type":"string"}
}
}
type 키워드를 사용하여 유요한 타입 명시 > 해당 데이터가 유효한지 검사
properties 키워드 사용 시 해당 객체가 가지는 프로퍼티가 유효한지 검사
숫자 검증
- 정수
{
"type":"integer"
}
해당 키가 정수인지 검사
- 숫자
{
"type":"number"
}
해당 키가 숫자인지 검사
- 배수
{
"type":"number",
"multipleOf":3
}
해당 키가 3의 배수인지 검사
- 범위
{
"type":"number",
"minimum":1,
"maximum":10
}
해당 키가 1보다 크거나 같고 10보다 작은 숫자인지 검사
문자열 검증
- 문자열
{
"type":"string"
}
해당 데이터가 문자열인지 검사
- 문자열 길이
{
"type":"string",
"minLength":1,
"maxLength":10
}
해당 데이터의 문자열이 1보다 크고 10보다 작은지 검사
객체 검증
- 객체
{
"type":"object"
}
해당 데이터가 객체인지 검사
- 프로퍼티
{
"type":"object",
"properties":{
"name":{"type":"string"},
"num":{"type":"integer"},
"age":{"type":"integer"}
}
}
해당 객체가 가지는 프로퍼티가 유효한지 검사
- 필수 프로퍼티
{
"type":"object",
"properties":{
"name":{"type":"string"},
"num":{"type":"integer"},
"age":{"type":"integer"}
}
"required":["name","num"]
}
해당 데이터가 객체이면서 프로퍼티로 name과 num을 가졌는지 검사
- 프로퍼티 개수
{
"type":"object",
"minProperties":1
"maxProperties":5
}
해당 데이터가 객체이면서 프로퍼티를 1~3개를 가졌는지 검사
배열 검증
- 배열 요소
{
"type":"array",
"items" {
"type":"number"
}
}
해당 데이터가 배열이면서 배열 요소가 모두 숫자인지 검사
{
"type":"array",
"items"[
{
"type":"number"
},
{
"type":"number"
},
{
"type":"string"
}
]
}
해당 데이터가 배열이면서 첫번째, 두 번째 배열 요소가 숫자이고 세 번째 배열 요소가 문자열인지 검사
- 배열 길이
{
"type":"array",
"minItem":1,
"maxItem":5
}
해당 데이터가 배열이면서 가지고 있는 배열 요소가 1~5인지 검사
- 중복 값
{
"type":"array",
"uniqueItems":ture
}
해당 데이터가 배열이면서 가지고 있는 배열 요소의 값이 중복이 되지 않는가 검사
(uniqueItems 값이 true면 배열 요소 값의 중복을 허락하지 않는다)
(uniqueItems 값이 false면 배열 요소 값의 중복을 허락한다)
기타 검증
- 볼린
{
"type":"boolean"
}
해당 데이터가 볼린인지 검사
- NULL
{
"type":"null"
}
해당 데이터가 NULL인지 검사
'Android' 카테고리의 다른 글
Android] SharedPreferences 저장 위치 접근 (0) | 2022.03.24 |
---|---|
Android] JSON 생성 및 파싱 (2) | 2022.03.20 |
Android] XML - Extensible Markup Language (0) | 2022.03.18 |
Android] SharedPreferences를 이용하여 값 저장 , 불러오기 (0) | 2022.03.14 |
Android] 안드로이드 스튜디오 지도 구현하기 (0) | 2022.03.07 |