파이썬 객체를 JSON 객체로 변환하는 방법
파이썬에서 리스트, 딕셔너리 같은 객체를 JSON 형식의 문자열로 변환하는 것을 직렬화(Serialization)라고 합니다. 파이썬은 기본 내장 모듈인 json을 제공하며, 이 모듈의 json.dumps() 메서드를 사용하면 간단하게 변환할 수 있습니다.
기본 예제: 리스트 객체 변환하기
예를 들어 다음과 같은 리스트 객체가 있다고 가정해 보겠습니다.
>>> a = [1, 2, 3]
먼저 json 모듈을 임포트한 뒤, json.dumps() 메서드에 객체를 전달하면 JSON 문자열이 반환됩니다.
>>> import json
>>> json.dumps(a)
'[1, 2, 3]'
결과로 얻은 '[1, 2, 3]'이 바로 JSON 객체(JSON 문자열)입니다. 원래의 파이썬 리스트와 데이터는 동일하지만, 타입이 str로 변경된 점에 유의하세요.
딕셔너리 객체도 변환 가능
json.dumps()는 리스트뿐만 아니라 딕셔너리 등 다양한 파이썬 객체를 지원합니다.
>>> data = {'name': '홍길동', 'age': 30}
>>> json.dumps(data, ensure_ascii=False)
'{"name": "홍길동", "age": 30}'한글이 포함된 경우 ensure_ascii=False 옵션을 사용하면 한글이 그대로 출력됩니다. 이 옵션을 생략하면 한글이 유니코드 이스케이프 문자(\uXXXX)로 표시됩니다.
자주 사용되는 옵션
- indent: 들여쓰기를 적용해 사람이 읽기 쉬운 형태로 출력합니다. 예:
json.dumps(a, indent=4) - sort_keys:
True로 설정하면 키를 알파벳 순으로 정렬합니다. - ensure_ascii:
False로 설정하면 한글 등 비 ASCII 문자를 그대로 출력합니다.
참고: 파일에 저장할 때는 json.dump() 사용
변환 결과를 파일로 저장하려면 문자열을 반환하는 json.dumps() 대신, 파일 객체에 직접 쓰는 json.dump()를 사용하는 것이 편리합니다.
>>> with open('data.json', 'w', encoding='utf-8') as f:
... json.dump(a, f)정리
파이썬 객체를 JSON 객체로 변환하려면 import json으로 모듈을 불러온 후 json.dumps() 메서드를 호출하면 됩니다. 반대로 JSON 문자열을 파이썬 객체로 되돌릴 때는 json.loads()를 사용합니다.