JSON 파일?
- JavaScript Object Notation
- 이름-값 쌍과 배열로 구성된 데이터 객체를 저장하고 전송하는 개방형 표준 파일 형식이자 경량의 데이터 교환 형식
- 사람이 읽고 쓰기에 용이하며, 기계가 분석하고 생성함에도 용이
- 확장자 : .json
구조
1. 주석
- // (한줄)
- /* */ (여러줄)
2. 값
- string(""), number, true, false, null, object({ }), array([ ])
3. object (객체)
- { }
- 객체는 {} (중괄호) 문자 안에 이름 : 값 쌍들을 ,(콤마) 로 구분
- 비순서화된 SET
4. array (배열)
- [ ]
- 배열은 [] (대괄호) 문자 안에 ,(콤마) 로 값 구분
- 순서 존재
{
"이름 공간(키)": "값",
"값 구분자": "각각의 값들은 ',' (콤마)로 구분되어야 합니다.",
"이스케이프": "키나 값에서 큰따옴표를 쓰고 싶으면-특정 문자를 이스케이프하려면- \"처럼 문자 앞에 역슬래시를 붙입니다.",
"자료형": "표현 가능한 자료형은 문자열, 숫자, 불리언, 널, 객체, 배열 6개입니다.",
"문자열값": "나무위키, 여러분이 가꾸어 나가는 지식의 나무",
"숫잣값": 19721121,
"불리언값": true,
"널값": null,
"객쳇값": {
"값 1": 3.14159265358979323846264338,
"값 2": false,
"값 3": {
"객체 안에": "객체를 넣는 것도 가능하지요",
"구분자": "또한 키와 값은 ':'로 구분됩니다"
}
},
"배열값": [
"이것은 배열입니다.",
{
"현잿값의 인덱스": 1,
"이런 식으로": "배열 안에 여러 값을 넣을 수 있습니다."
},
[ "배열", "안에", "배열을", "넣는 것도", "가능하지요" ]
],
"값의 개수가 적을 때는": "다음과 같이 한 줄로도 객체와 배열 표현이 가능합니다.",
"한 줄 객체": { "1": "one", "2": "two", "3": "three" , "4": "four" },
"한 줄 배열": [ "1", "2", "3", "4", "5", "6" ]
}
자주 쓰이는 JSON 파일 예시 (from.gpt)
1. 앱 설정 파일 (config.json)
{
"app_name": "MyCoolApp",
"version": "1.0.0",
"debug": true,
"server": {
"host": "127.0.0.1",
"port": 8000
}
}
- Python, Node.js 등 백엔드 앱의 설정 파일
- server 안에 중첩된 구조로 호스트/포트를 설정함
2. 사용자 정보 예시 (user.json)
{
"id": 1,
"username": "johndoe",
"email": "johndoe@example.com",
"roles": ["admin", "editor"]
}
- 로그인한 사용자 정보를 표현
- roles처럼 배열이 자주 사용됨
- 인증 토큰 발급 시 정보로도 활용됨
3. API 응답 예시 (response.json)
{
"status": "success",
"data": {
"title": "JSON 예제",
"views": 123,
"tags": ["json", "example", "api"]
}
}
- REST API에서 반환하는 구조
- status는 응답 상태
- data 안에 실제 정보 포함 (중첩 구조)
4. 테스트 설정 예시 (test_config.json)
{
"database": {
"engine": "sqlite",
"path": "test.db"
},
"log_level": "debug",
"mock": true
}
- 테스트 실행 시 사용할 DB 설정, 로그 레벨 등
- 실제 환경과 격리된 테스트 환경용
* json
https://www.json.org/json-en.html
* wikipedia/json
https://en.wikipedia.org/wiki/JSON
* 나무위키/json
https://namu.wiki/w/JSON