JSON(JavaScript Object Notation)은 데이터를 교환하기 위한 경량의 포맷으로, 자바스크립트 객체 문법을 차용해서 구조화된 데이터를 표현하는 방식입니다. 하지만 이름에 ‘JavaScript’가 들어 있음에도 언어와 플랫폼에 독립적으로 사용할 수 있다는 점이 가장 큰 특징입니다.
{
"name": "홍길동",
"age": 20
}[1, 2, 3, "hello", true]undefined나 함수(() => {}) 같은 자바스크립트 특유의 요소는 JSON에서 사용할 수 없다.주의: 자바스크립트 객체(Object)와 헷갈리면 안 됩니다.
JSON은 단순히 데이터를 담는 문자열 포맷이며, 자바스크립트 객체와 형태는 유사하지만 실제로는 별개입니다.
const jsonString = '{"name": "홍길동", "age": 20}';
const obj = JSON.parse(jsonString);
console.log(obj.name); // "홍길동"
console.log(obj.age); // 20
JSON.parse()는 JSON 문자열을 자바스크립트 객체로 변환해준다.JSON.stringify()를 사용합니다.import json
json_str = '{"name": "홍길동", "age": 20}'
obj = json.loads(json_str) # dict로 변환
print(obj["name"]) # "홍길동"
print(obj["age"]) # 20
json.loads()는 JSON 문자열을 파이썬 딕셔너리(dict)로 변환합니다.json.dumps() 함수를 사용합니다.JSON은 구조화된 데이터를 표현하기에 스키마(Schema)를 어떻게 설계하느냐가 중요합니다.
자바스크립트/타입스크립트 관점에서, 유니온 타입이란 값이 여러 가지 타입 중 하나일 수 있음을 의미합니다. 예를 들어,
type Status = "success" | "fail" | "pending";
위 Status 타입은 "success", "fail", "pending" 중 하나가 될 수 있습니다.
JSON을 설계할 때도, 특정 키가 여러 타입을 가질 수 있도록 설계될 수 있는데, 이는 문서나 스키마에서 유연성과 복잡성을 동시에 증가시킵니다. 따라서 스키마 설계를 잘 해야 JSON을 사용하는 모든 곳에서 혼동 없이 데이터를 핸들링할 수 있어요.
{ "name": "홍길동" }{ name: "홍길동", sayHello: () => console.log("Hello!") }undefined나 함수 같은 요소는 JSON에 포함할 수 없음.JSON.parse(), JSON.stringify()(JavaScript) 또는 json.loads(), json.dumps()(Python) 등을 활용해 직렬화/역직렬화 할 수 있습니다.Reference