반응형
JSON(제이슨)?
JSON이란 JavaScript Object Notation의 축약어로, JavaScript에서 객체를 표현하는 방법이지만,
주로 데이터를 저장하거나 전송할 때 사용하는 경량 DATA 교환 형식으로 사용된다.
JSON은 하나의 속성이 키-값의 한 쌍으로 구성되어 데이터를 표현한다.
{
"name" : "홍길동",
"age" : "26"
}
위와 같이 name, age라는 '속성'과 홍길동, 26이라는 '값'이 각각 서로 쌍을 짓는 형태이다.
JSON은 다음과 같은 문법을 사용한다.
- JSON객체는 { } (중괄호)로 표기한다.
- 배열은 [ ] (대괄호)로 표기한다.
- 각 속성은 Key와 Value쌍으로 이루어지며, 둘은 : (콜론)으로 구분한다.
- 각 속성들은 , (쉼표)를 사용해서 구분한다.
JSON에 들어갈 수 있는 자료형은 다음과 같다.
- Number(수)
- String(문자열)
- Boolean(논리값)
- Array(배열)
- Object(객체)
- null
{
"name" : "홍길동",
"age" : 26,
"병역" : true,
"특기" : ["담넘기", "도술"],
"가족" : {"부" : "홍상직", "모" : "춘섬", "형": "홍인형"}
}
위와 같이 JSON객체를 생성하여 사용할 수 있다.
장점
- 함축적으로 최소한의 정보만을 가지고 있기 때문에 용량이 작고 속도가 빠르다.
- 언어에 독립적이며, 사용하기가 쉽다.
- 객체의 구조를 파악하기 쉬워 가독성이 좋다.
단점
- XML에 비해 문법 오류에 취약하다.
- XML의 경우 스키마를 이용한 검증이 가능한데, JSON은 불가능하다.
- 주석을 지원하지 않는다.
문제점
AJAX는 데이터만이 아니라 JavaScript자체도 전달할 수 있다.
JSON데이터라고 받은 것이 단순 데이터가 아니고, 실행될 수 있다는 말이다.
공격자들은 이를 악용해 악성 스크립트를 실행시키는 공격을 할 수 있고,
이러한 부분에서 보안 취약점이 생길 수 있다.
이러한 문제점 해결을 위해 JSON관련 라이브러리를 사용하여
받은 JSON에서 순수하게 데이터만 추출하도록 하기도 한다.
반응형
'Computer Science' 카테고리의 다른 글
[자료구조] 트리(Tree) (0) | 2022.01.13 |
---|---|
동기(Synchronous)와 비동기(Asynchronous) (0) | 2022.01.11 |
탐색 알고리즘(선형, 이진, 해시) (0) | 2022.01.09 |
MVC, MVP, MVVM (0) | 2022.01.06 |
OSI 7계층 (Open System Intercon) (0) | 2021.12.29 |