JavaScript Object Notation의 약자
데이터를 저장하고 전송하기 위한 경량 텍스트 기반 포맷.
특정 언어에 종속되지 않아 REST API 통신에서 사실상 표준으로 쓰임.
{ } — Key-Value 쌍. Key는 반드시 큰따옴표("")[ ] — 순서 있는 값 목록{
"name": "현서",
"skills": ["Flutter", "Dart"],
"age": 25
}
| JSON | XML | |
|---|---|---|
| 무게 | 가볍다 | 무겁다 |
| 파싱 | 빠름 | 느림 |
| 가독성 | 좋음 | 복잡 |
→ REST API엔 JSON이 압도적 우세
// 직렬화
final jsonStr = jsonEncode(myObject.toJson());
// 역직렬화
final obj = MyClass.fromJson(jsonDecode(jsonStr));
JSON은 그냥 "규칙 있는 텍스트"일 뿐. 복잡한 게 아니라 Key-Value 구조를 약속된 형식으로 쓴 것
Flutter에서 API 통신할 때 fromJson / toJson 패턴이 자주 나오니까 직렬화 개념은 확실히 잡기