JSON은 무엇이 단순하고 무엇을 조심해야 하나
JSON object는 중괄호, array는 대괄호를 사용한다.
1
2
3
4
5
6
7
8
| {
"name": "JJM",
"age": 26,
"phones": [
{"type": "mobile", "number": "010-0000-0000"},
{"type": "work", "number": "02-0000-0000"}
]
}
|
JavaScript에서는 객체를 문자열로 만들 때 JSON.stringify, 문자열을 객체로 되돌릴 때 JSON.parse를 사용한다.
1
2
3
4
5
6
7
| const person = {
name: 'JJM',
age: 26
};
const jsonText = JSON.stringify(person);
const restored = JSON.parse(jsonText);
|
JSON은 내용을 바로 읽기 쉽지만, 문서 자체만으로 모든 필드의 필수 여부와 타입 규칙을 강제하는 것은 아니다. Protobuf는 스키마가 명시적이지만 .proto 작성, 코드 생성, 스키마 관리 단계가 추가된다.
선택할 때는 “어느 형식이 무조건 더 좋은가”보다 다음을 묻는 편이 낫다.
- 사람이 파일을 자주 열어 확인하고 수정해야 하는가?
- 보내는 쪽과 받는 쪽이 같은 스키마와 생성 코드를 관리할 수 있는가?
- 필드가 없거나 여러 번 들어오는 상황을 어디에서 검증할 것인가?
- 저장된 과거 데이터를 새 코드에서도 읽어야 하는가?
직렬화 성공은 byte나 문자열이 만들어졌다는 뜻일 뿐, 의미가 올바르다는 보장은 아니다. 저장 후 즉시 역직렬화해 필수 필드와 반복 필드를 확인하는 round-trip 테스트가 가장 작은 안전장치다.