본문 바로가기

Programming/Python

파이썬에서 JSON 데이터 형식 처리

반응형

파이썬은 기본적으로 JSON 데이터를 처리할 수 있는 json 모듈이 포함되어 있습니다.

json 모듈은 Python 타입을 JSON 형태의 문자열로 바꾸거나 그 반대의 기능을 제공합니다.

 

1. JSON 형태 문자열과 파일 읽기

JSON 형태의 문자열을 읽기 위해 loads()를 사용합니다.

import json

data = '{"title": "Book1", "ISBN": "12345", "author": [{"name": "autho1", "age": 30}, {"name": "autho2", "age": 25}]}'
json_data = json.loads(data)

print(json_data['title'])
print(json_data['ISBN'])

for author in json_data['author']:
    print(author['name'])
    print(author['age'])

JSON의 Key-Value 구조는 파이썬의 Dictionary로 변환되며 List는 List로 변환됩니다.

키 이름을 문자열로 입력하면 값을 가져올 수 있습니다.

리스트 역시 for 문을 통해 읽을 수 있으며 다음과 같은 결과가 표시됩니다.

loads() 결과

load() 메소드를 사용하면 파일의 내용을 읽어 오는 것도 가능합니다.

import json
from io import StringIO

io = StringIO('{"title": "Book1", "ISBN": "12345", "author": [{"name": "autho1", "age": 30}, {"name": "autho2", "age": 25}]}')
json_data = json.load(io)

print(json_data['title'])
print(json_data['ISBN'])

for author in json_data['author']:
    print(author['name'])
    print(author['age'])

메모리의 데이터를 파일처럼 읽을 수 있는 StringIO를 활용해서 파일에서 읽는 예제입니다.

결과는 위와 동일합니다.

 

2. 파이썬 타입을 JSON으로 변환하기

파이썬 타입을 JSON으로 변환하려면 dumps()와 dump()를 호출하면 됩니다.

import json

book = {'title': 'Book1', 'ISBN': '12345', 'author': [{'name': 'autho1', 'age': 30}, {'name': 'autho2', 'age': 25}]}
print(json.dumps(book))
print('')
print(json.dumps(book, indent=4))

예제에서 book은 파이썬의 Dictionary 타입으로 dumps()를 호출하면 String으로 변환됩니다.

indent를 지정하지 않으면 포맷팅이 되지 않은 문자열로 표시됩니다.

indent를 지정하면 지정한 값만큼의 들여 쓰기를 하기 때문에 가독성이 좋아집니다.

dumps() 결과

역시 dump()를 사용하면 파일에 저장이 가능합니다.

import json
from io import StringIO

book = {'title': 'Book1', 'ISBN': '12345', 'author': [{'name': 'autho1', 'age': 30}, {'name': 'autho2', 'age': 25}]}
io = StringIO()
json.dump(book, io)
print(io.getvalue())
print('')

io = StringIO()
json.dump(book, io, indent=4)
print(io.getvalue())

역시 메모리를 파일처럼 사용하기 위해 StringIO를 사용했습니다.

결과는 역시 위의 dumps()와 동일하게 출력됩니다.

 

loads()와 load()는 JSON을 파이썬 타입으로 변환하는 메소드입니다.

그리고 dumps()와 dump()는 파이썬 타입을 JSON으로 변환하는 메소드입니다.

파일 IO를 다루는 메소드는 s가 붙지 않고 문자열을 다루는 메소드는 s가 붙습니다.

파이썬의 json 모듈을 통해 별도의 추가 모듈 없이도 쉽고 편리하게 JSON을 다룰 수 있습니다.

반응형