JSON은 데이터 교환을 위해 만들어진 객체 형태의 포맷이다. JSON 포맷은 JavaScript를 포함한 많은 언어에서 범용적으로 사용하는 유명한 포맷이다.
객체는 타입 변환을 이용해 String으로 변환할 경우 객체 내용을 포함하지 않는다. 자바스크립트에서 객체를 문자열로 변환하기 위해 메서드(message.toString())나 형 변환(String(message))을 시도하면, [object Object]라는 결과를 리턴한다.
이 문제를 해결하기 위해서는 객체를 JSON의 형태로 변환하거나 JSON을 객체의 형태로 변환하는 방법이 있다.
JSON.stringify, 직렬화(serialize)
JSON으로 변환된 객체의 타입은 문자열이다.
let transferableMessage = JSON.stringify(message)
console.log(transferableMessage)
// `{"sender":"jimi","receiver":"may","message":"오늘 같이 스터디할래?","createdAt":"2023-01-12 14:30:10"}`
console.log(typeof(transferableMessage))
// `string`
JSON.parse, 역직렬화(deserialize)
let packet = `{"sender":"jimi","receiver":"may","message":"오늘 같이 스터디할래?","createdAt":"2023-01-12 10:10:10"}`
let obj = JSON.parse(packet)
console.log(obj)
/*
* {
* sender: "jimi",
* receiver: "may",
* message: "오늘 같이 스터디할래?",
* createdAt: "2023-01-12 14:30:10"
* }
*/
console.log(typeof(obj))
// `object`
JavaScript의 객체와 비슷해보이지만, JavaScript의 객체와는 약간은 다른 규칙이 있다.
키, 문자열 값에 큰 따옴표를 반드시 붙여야 한다. 키와 값 사이 공백이나 키-값 쌍 사이 공백이 사용 불가하다.
자바스크립트 객체
키 - 따옴표 없이 쓸 수 있음
{ key : "property" }
문자열 값 - 작은 따옴표도 사용 가능
{ "key" : 'property' }
키와 값 사이 공백 - 사용 가능
{"key" : 'property'}
키-값 쌍 사이 공백 - 사용 가능
{ "key":'property', num:1 }
JSON
키 - 반드시 큰따옴표를 붙여야 함
'{"key":"property"}'
문자열도 반드시 큰따옴표로 감싸야 함
'{"key":"property"}'
키와 값 사이 공백 - 사용 불가능
'{"key":"property"}'
키-값 쌍 사이 공백 - 사용 불가능
'{"key":"property","num":1}'
간결하고 가독성이 좋음
JSON은 텍스트 기반 형식이므로 사람이 읽고 쓰기 쉬우며, 간단하고 가독성이 좋다.
키-값 쌍
JSON은 키(key)와 값(value) 사이의 쌍으로 데이터를 표현한다. 키-값 쌍은 객체의 형태로 표현되며 중괄호 {}로 둘러싸여 있다.
데이터 타입 지원
JSON은 다양한 데이터 타입을 지원한다. 문자열, 숫자, 불리언, 배열, 객체, null을 표현할 수 있다.
키와 문자열 값은 큰 따옴표로 둘러싸야 함
JSON에서는 키와 문자열 값은 큰 따옴표로 둘러싸야 한다. 작은 따옴표나 백틱은 사용할 수 없다.
문자열은 이스케이프 가능
문자열 값 내에서 특수 문자를 이스케이프하여 표현할 수 있다.
중첩 구조
JSON 객체 내에서 다른 JSON 객체를 중첩하여 사용할 수 있으며, 배열을 사용하여 여러 값을 저장할 수 있다.
언어 독립적
JSON은 언어 독립적인 형식이므로 다양한 프로그래밍 언어 간에 데이터를 교환하는 데 사용할 수 있다.
웹 API 통신: 웹 애플리케이션에서 서버와의 통신에 JSON을 주로 사용한다. 서버에서 클라이언트로 데이터를 보낼 때나 클라이언트에서 서버로 데이터를 전송할 때 주로 JSON 형식을 사용한다.
JSON.stringify와 JSON.parse
JavaScript에서 JSON을 다룰 때 JSON.stringify 함수를 사용하여 JavaScript 객체를 JSON 문자열로 직렬화하고, JSON.parse 함수를 사용하여 JSON 문자열을 JavaScript 객체로 역직렬화한다.
JSON Schema
JSON 데이터의 유효성 검사 및 문서화를 위한 JSON Schema라는 표준이 있다.