JSON(JavaScript Object Notation) :
Javascript 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷.
웹 어플리케이션에서 데이터를 전송할 때 일반적으로 사용한다.
(서버에서 클라이언트로 데이터를 전송하여 표현하거나 반대의 경우.)
Javascript 객체 문법과 비슷하지만 딱히 javascript가 아니더라도 JSON을 읽고 쓸 수 있는 기능이 다수의 프로그래밍 환경에서 제공된다.
JSON은 문자열 형태로 존재함. - 네트워크를 통해 전송할 때 유용함.
데이터에 접근하기 위해서 네이티브 JSON 객체로 변환될 필요가 있다. javascript는 JSON 전역 객체를 통해 문자열과 JSON 객체의 상호변환을 지원한다.
*문자열에서 네이티브 객체로 변환하는것은 Parsing이라고 함. (JSON 형식의 텍스트를 자바스크립트 객체로 변환한다.)
JSON.parse
*네트워크를 통해 전달할 수 있게 객체를 문자열로 변환하는 과정은 문자열화(Stringification)이라고 함.
(자바스크립트 객체를 JSON 텍스트로 변환한다.)
JSON.Stringfy
JSON의 구조는?
JSON 은 Javascript 객체 리터럴 문법을 따르는 문자열임.
JSON 안에는 마찬가지로 Javascript의 기본 데이터 타입인 문자열, 숫자, 배열, 불리언 그리고 다른 객체를 포함할 수 있음.
EX)
{
"squadName": "Super hero squad",
"homeTown": "Metro City",
"formed": 2016,
"secretBase": "Super tower",
"active": true,
"members": [
{
"name": "Molecule Man",
"age": 29,
"secretIdentity": "Dan Jukes",
"powers": ["Radiation resistance", "Turning tiny", "Radiation blast"]
},
{
"name": "Madame Uppercut",
"age": 39,
"secretIdentity": "Jane Wilson",
"powers": [
"Million tonne punch",
"Damage resistance",
"Superhuman reflexes"
]
},
{
"name": "Eternal Flame",
"age": 1000000,
"secretIdentity": "Unknown",
"powers": [
"Immortality",
"Heat Immunity",
"Inferno",
"Teleportation",
"Interdimensional travel"
]
}
]
}
태그로 표현하기보다는 중괄호 {} 같은 형식으로 하고, 값을 ','로 나열하기에 그 표현들이 간단함.
자바스크립트 객체와 마찬가지로 key/value가 존재할 수 있으며 key값이나 문자열은 항상 쌍따옴표를 이용하여 표기해야 한다.
객체, 배열 등의 표기를 할 수 있다.
일반 자바스크립트의 객체처럼 원하는 만큼 중첩시켜서 사용할 수 있다.
JavaScript 객체 문법과 JSON의 차이점 :
-javaScript 객체 속성의 키는 따옴표 없이 사용할 수 있지만 JSON의 모든 키와 문자열은 반드시 큰 따옴표로 둘러쌓여야한다
-javascript는 따옴표로를 사용하여 문자열을 나타낼 수 있지만 JSON 문자열은 반드시 큰 따옴표로 문자열을 둘러싸야 함.
-json은 주석을 지원하지 않음.
-JSON은 함수, undefined, NaN, infinity-infinity 등의 타입은 사용할 수 없지만 Javascript는 사용 가능.
-JavaScript는 프로그램 로직을 포함하는 코드를 작성할 수 있지만 JSON은 데이터 구조만을 표현하여, 프로그램 로직을 나타낼 수 없다.
JSON은 데이터를 표현하고 교환하기 위한 간단한 형식이며, JavaScript 객체의 부분집함으로 간주된다. JSON은 데이터를 전송하고 저장하는 데 주로 사용되는 반면, JavaScript는 프로그래밍 언어로서의 더 많은 기능을 제공한다
참고자료 :
https://velog.io/@surim014/JSON%EC%9D%B4%EB%9E%80%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80