json_파싱.md
JSON 파싱
JSON (JavaScript Object Notation)은 경량의 데이터 교환 형식으로, 사람이 읽고 쓰기 쉽고 기계가 쉽게 분석(parsing)할 수 있도록 설계되었습니다. 프로그래밍 언어에서 데이터를 저장하거나 서버와 클라이언트 간에 정보를 주고받을 때 널리 사용되며, 특히 웹 애플리케이션과 API 통신에서 핵심적인 역할을 합니다. 이 문서에서는 JSON 파싱의 개념, 주요 프로그래밍 언어에서의 구현 방법, 주의사항 및 실용적인 예시를 다룹니다.
개요
JSON 파싱이란 JSON 형식의 문자열을 프로그래밍 언어에서 사용할 수 있는 데이터 구조(예: 객체, 딕셔너리, 배열 등)로 변환하는 과정을 의미합니다. 반대로, 메모리 상의 데이터 구조를 JSON 문자열로 변환하는 작업은 직렬화(serialization) 또는 문자열화(stringification)라고 부릅니다.
JSON은 다음과 같은 기본 자료형을 지원합니다:
- 문자열 ("hello"
)
- 숫자 (42
, 3.14
)
- 불리언 (true
, false
)
- null
- 객체 ({}
로 감싸진 키-값 쌍)
- 배열 ([]
로 감싸진 값의 리스트)
예시:
{
"name": "김철수",
"age": 30,
"isStudent": false,
"hobbies": ["독서", "등산"],
"address": {
"city": "서울",
"zipcode": "07071"
}
}
주요 프로그래밍 언어에서의 JSON 파싱
Python
Python은 json
모듈을 통해 JSON 파싱을 쉽게 수행할 수 있습니다.
import json
# JSON 문자열 파싱
json_string = '{"name": "김철수", "age": 30, "hobbies": ["독서", "등산"]}'
data = json.loads(json_string) # 문자열 → 파이썬 객체
print(data['name']) # 출력: 김철수
# 객체를 JSON 문자열로 변환
json_output = json.dumps(data, ensure_ascii=False, indent=2)
print(json_output)
json.loads()
: JSON 문자열을 파이썬 객체로 변환json.dumps()
: 파이썬 객체를 JSON 문자열로 변환[ensure_ascii=False](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/Python/ensure_ascii%3DFalse)
: 한글 등 유니코드 문자 유지[indent](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%8B%9C%EA%B0%81%ED%99%94/%ED%8F%AC%EB%A7%B7%ED%8C%85/indent)
: 가독성을 위한 들여쓰기 설정
JavaScript
JavaScript는 JSON
객체를 내장하고 있어, [JSON.parse](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/JavaScript/JSON.parse)()
와 [JSON.stringify](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/JavaScript/JSON.stringify)()
를 사용합니다.
const jsonString = '{"name": "김철수", "age": 30, "hobbies": ["독서", "등산"]}';
const data = JSON.parse(jsonString); // 문자열 → 객체
console.log(data.name); // 출력: 김철수
const jsonOutput = JSON.stringify(data, null, 2);
console.log(jsonOutput);
Java
Java에서는 외부 라이브러리가 필요합니다. 대표적으로 Jackson 또는 Gson을 사용합니다.
Gson 예시:
import com.google.gson.Gson;
public class Main {
public static void main(String[] args) {
String json = "{\"name\":\"김철수\",\"age\":30}";
Gson gson = new Gson();
Person person = gson.fromJson(json, Person.class);
System.out.println(person.name); // 출력: 김철수
}
}
class Person {
String name;
int age;
}
JSON 파싱 시 주의사항
- 유효한 JSON 형식: 파싱하려는 문자열은 반드시 유효한 JSON이어야 합니다. 예를 들어, 문자열 키는 큰따옴표(
"
)로 감싸야 하며, 마지막 요소 뒤에 쉼표를 붙이면 안 됩니다. - 인코딩 문제: 한국어 등 비ASCII 문자를 포함할 경우, UTF-8 인코딩을 사용하고, 파서 설정에서 유니코드 처리를 활성화해야 합니다.
- 보안: 신뢰할 수 없는 소스의 JSON을 파싱할 때는 주의가 필요합니다. 특히,
eval()
과 같은 위험한 함수 사용은 피해야 합니다. - 성능: 대용량 JSON을 파싱할 때는 스트리밍 파서(예: Jackson의
JsonParser
)를 사용해 메모리 사용량을 줄일 수 있습니다.
관련 기술 및 도구
- JSON Schema: JSON 데이터의 구조를 정의하고 검증하는 표준
- JSONPath: JSON 데이터 내에서 특정 값을 쿼리하는 쿼리 언어 (XPath와 유사)
- Online JSON Parsers: jsonlint.com 같은 도구로 JSON 형식을 검증 가능
참고 자료
- ECMA-404: The JSON Data Interchange Standard
- Python 공식 문서: json — JSON encoder and decoder
- Mozilla Developer Network: JavaScript JSON
JSON 파싱은 현대 소프트웨어 개발에서 데이터 처리의 기본 기술 중 하나이며, 다양한 언어와 플랫폼에서 일관된 방식으로 활용됩니다. 올바른 사용과 오류 처리를 통해 안정적인 시스템 구축이 가능합니다.
이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.