JSON Toolkit

JSON 파일이란 무엇이고, 무엇으로 열고, 어떻게 수정할까

핵심 요약: 메모장에서 깨진 텍스트부터 JSON 파일을 여는 세 가지 방법, 수정 후 문제가 없는지 확인하는 법, 거대한 파일이 열리지 않을 때의 대응까지 다룹니다.

초급약 9분 소요2026-10-30 발행2026-10-30 업데이트
JSON 파일 기초 표지

핵심부터 말하면, JSON 파일을 열기 전에 인코딩과 BOM을 확인하고 구조가 객체 또는 배열 하나인지 살펴보세요. 수정한 뒤에는 눈으로 괄호와 쉼표를 훑지 말고 반드시 파서로 검증해야 합니다.

.json 확장자를 가진 일반 텍스트 파일이고, 메모장으로도 열립니다. 진짜 골칫거리는 "열리지 않는다"가 아니라, 열고 나서 무엇을 깨뜨렸는지 보이지 않는다는 점입니다.

1. JSON 파일 안에는 실제로 무엇이 들어 있나

유효한 JSON 파일에는 두 가지 중 하나만 들어갈 수 있습니다. 객체 {...} 또는 배열 [...]입니다. 다른 것은 허용되지 않습니다. 변수 선언도, 주석도, 함수도 없습니다.

{
  "name": "order service",
  "port": 8080,
  "debug": false,
  "upstream": ["10.0.0.11", "10.0.0.12"],
  "timeout": null
}

구조적으로 세 가지만 알아보면 충분합니다:

보이는 것 의미 대응하는 프로그래밍 개념
{ }로 감싼 키-값 쌍 객체. 키는 큰따옴표로 감싼 문자열이어야 함 Map / struct
[ ]로 감싼 값의 나열 배열. 요소 타입이 달라도 됨 List
여섯 가지 값 타입 문자열, 숫자, 불리언, null, 객체, 배열 이 여섯 가지뿐. 날짜도 정수도 없음

파일 확장자는 내용을 결정하지 않습니다. package.json, tsconfig.json, composer.json은 모두 같은 종류이며, 도구마다 읽는 키만 다르게 합의한 것입니다.

2. 상황에 따라 고르는 세 가지 여는 방법

잠깐 보고 싶을 때: 브라우저로 엽니다. 파일을 Chrome이나 Edge 창으로 끌어 놓으면 그대로 표시되고, JSON Viewer 확장이 설치되어 있으면 자동으로 pretty-print되어 접고 펼칠 수 있습니다.

내용을 수정해야 할 때: 에디터를 씁니다. VS Code, Sublime, Notepad++ 모두 JSON 구문 강조와 괄호 매칭을 제공하고, VS Code에서는 Shift + Alt + F로 문서를 포매팅합니다. Windows 메모장은 저장할 때 BOM을 추가할 수 있어 설정 변경이 적용되지 않을 수 있으므로 되도록 피하세요.

설치 없이 검증만 하고 싶을 때: 온라인 JSON 포매터를 씁니다. 내용을 붙여 넣으면 행과 열 번호, 오류 위치, 접고 펼칠 수 있는 트리가 바로 보이고, 끝나면 결과를 복사해 가면 됩니다. 데이터는 브라우저 안에서 로컬로 처리되며 서버로 업로드되지 않습니다.

거대한 파일(수십 MB 이상): 에디터로 억지로 열지 마세요. 100 MB JSON을 VS Code에서 열면 삶을 의심할 때까지 멈춥니다. 먼저 명령줄로 구조를 확인하세요:

# Look at the first 20 lines to confirm whether it is an array
head -n 20 data.json

# Use jq to list top-level keys without loading the whole file
jq -r 'keys[]' data.json | head

# Count the array length
jq 'length' data.json

3. 더블클릭했더니 깨진 텍스트가 열릴 때

원인은 셋이고 대응도 각각 다릅니다:

  1. 실은 바이너리 파일인 경우 (예: 압축 아카이브나 내보낸 데이터베이스 파일인데 확장자만 .json인 경우). file data.json으로 실제 타입을 확인하고, 억지로 텍스트로 취급하지 마세요.
  2. 인코딩이 UTF-8이 아닌 경우. 중국어 텍스트를 GBK로 인코딩하면 UTF-8 환경에서 깨집니다. 에디터의 "인코딩 지정하여 다시 열기"로 GBK를 한 번 시도해 보고, 제대로 표시되면 UTF-8로 저장하세요.
  3. 파일이 암호화되었거나 압축된 경우. 앞부분에 PK(zip)나 물음표 덩어리가 보입니다. 이런 파일은 먼저 압축을 풀거나 복호화해야 합니다.

4. 수정 후 문제가 없는지 확인하는 법

JSON은 관용이 없습니다. 쉼표 하나가 빠지거나, 하나가 더 붙거나, 따옴표 하나가 빠지면 파일 전체가 죽고, 보고되는 오류 위치는 대개 다음 행을 가리킵니다. 따라서 수정 후에는 반드시 검증해야 하고, 눈에 의존해서는 안 됩니다.

위험이 큰 세 가지 편집 동작, 문제를 일으키는 빈도 순:

동작 흔한 결과 피하는 법
설정 블록을 붙여 넣기 후행 쉼표나 전각 문장부호가 들어옴 붙여 넣은 직후 한 번 포매팅
키 순서를 손으로 바꾸기 쉼표가 더 붙거나 빠짐 에디터의 행 이동 기능을 쓰고 손으로 다시 입력하지 않기
배열의 마지막 요소 삭제 ,]가 남음 삭제 후 괄호가 짝을 이루는지 확인

검증은 간단합니다. 온라인 검증기에 붙여 넣고 빨간 텍스트를 찾거나, 명령줄에서 한 줄을 실행하세요:

python3 -m json.tool config.json > /dev/null && echo OK

OK가 출력되면 유효합니다. 필드 타입까지 검증하고 싶다면(예: port는 숫자, name은 비어 있으면 안 됨), JSON Schema를 작성하는 것이 사람 눈보다 훨씬 신뢰할 만합니다.

5. .json과 가까운 친척의 차이

확장자 차이 표준 파서로 읽을 수 있나
.json 표준 JSON 가능
.jsonc //와 /* */ 주석 허용 불가. 주석을 먼저 제거해야 함
.json5 주석, 작은따옴표, 따옴표 없는 키, 후행 쉼표 허용 불가. JSON5 파서 필요
.jsonl / .ndjson 한 줄에 독립적인 JSON 하나. 파일 전체로는 유효한 JSON이 아님 불가. 줄 단위로 읽어야 함

tsconfig.json에 주석이 보인다고 놀라지 마세요. 실제로는 .jsonc로 처리됩니다. 같은 내용을 JSON.parse에 넣으면 오류가 납니다. 사이를 변환해야 할 때는 JSON5 → JSON으로 주석과 후행 쉼표를 한 번에 걷어 내세요.

6. 저장 형식을 바꿔야 할 때

JSON은 "구조가 고정되지 않고, 사람이 읽어야 하며, 여러 언어를 넘나드는" 시나리오에 맞습니다. 파일이 수십 MB를 넘고 필드 구조가 안정적이며 조건 쿼리가 필요하다면 JSON에 머무는 것은 스스로를 괴롭히는 일입니다. SQLite, Parquet로 옮기거나 데이터베이스에 적재하세요. 읽기/쓰기 성능 차이가 수십 배 단위입니다. 구체적인 장단점은 대형 JSON 파싱과 스트리밍을 참고하세요.

FAQ

열기에는 너무 큰 JSON 파일은 어떻게 검사하나?

에디터로 억지로 열지 마세요. 100 MB JSON을 VS Code에서 열면 삶을 의심할 때까지 멈춥니다. 먼저 명령줄로 구조를 확인하세요. head -n 20으로 배열인지 확인하고, jq -r 'keys[]'로 최상위 키만 나열하고, jq 'length'로 배열 길이를 셉니다. 이 명령들은 어느 것도 파일 전체를 로드하지 않습니다.

메모장에서 수정했더니 설정이 적용되지 않는 이유는?

Windows 메모장은 저장할 때 BOM을 추가할 수 있고, BOM이 있는 파일은 설정 파싱에 실패하므로 수정한 내용이 반영되지 않습니다. 이 글은 VS Code, Sublime, Notepad++ 같은 에디터를 권장하며, 이들은 JSON 구문 강조와 괄호 매칭을 제공합니다. 이미 메모장을 썼다면 "BOM 없는 UTF-8"으로 다시 저장하고 재시도하세요.

JSON 파일을 JSON5처럼 취급해 주석을 달 수 있나?

안 됩니다. 표준 파서는 .json 파일의 주석을 허용하지 않으며 JSON.parse가 즉시 오류를 냅니다. 주석은 대응하는 파서로 읽는 .jsonc 또는 .json5 파일에 속합니다. tsconfig.json 같은 파일은 실제로 .jsonc로 처리되며, 같은 내용을 JSON.parse에 넣으면 실패합니다.