[파이썬] json 모듈로 JSON 데이터 다루기

JSON 데이터를 처리하기 위해서 사용되는 파이썬의 내장 모듈인 json에 대해서 알아보도록 하겠습니다.

loads() 함수: JSON 문자열을 Paython 겍체로 변환

JSON 문자열을 Python의 객체로 변환하기 위해서는 loads() 함수를 사용합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import json

json_string = '''{
"id": 1,
"username": "Bret",
"email": "Sincere@april.biz",
"address": {
"street": "Kulas Light",
"suite": "Apt. 556",
"city": "Gwenborough",
"zipcode": "92998-3874"
},
"admin": false,
"hobbies": null
}'''

json_object = json.loads(json_string)

assert json_object['id'] == 1
assert json_object['email'] == 'Sincere@april.biz'
assert json_object['address']['zipcode'] == '92998-3874'
assert json_object['admin'] is False
assert json_object['hobbies'] is None

일반적으로 파일에 저장되어 있는 JSON 문자열을 읽거나, HTTP 요청의 전문(body)을 읽을 때 자주 사용됩니다.

dumps() 함수: Python 객체를 JSON 문자열로 변환

Python의 객체를 JSON 문자열로 변환하기 위해서는 dumps() 함수를 사용합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import json

json_object = {
"id": 1,
"username": "Bret",
"email": "Sincere@april.biz",
"address": {
"street": "Kulas Light",
"suite": "Apt. 556",
"city": "Gwenborough",
"zipcode": "92998-3874"
},
"admin": False,
"hobbies": None
}

json_string = json.dumps(json_object)
print(json_string)
  • 콘솔 출력
1
{"id": 1, "username": "Bret", "email": "Sincere@april.biz", "address": {"street": "Kulas Light", "suite": "Apt. 556", "city": "Gwenborough", "zipcode": "92998-3874"}, "admin": false, "hobbies": null}

디폴트로 변환되는 JSON 문자열은 위와 같이 한 줄이기 때문에 Python 객체가 많은 데이터를 담고 있는 경우, 가독성이 떨어질 수 있습니다.
이럴 경우, indent 파라미터에 숫자를 넘기면 그 만큼 들여쓰기가 되어 JSON 문자열로 변환이 됩니다.

1
2
3
4
5
6
import json

json_object = {""" 위와 동일 """}

json_string = json.dumps(json_object, indent=2)
print(json_string)
  • 콘솔 출력
1
2
3
4
5
6
7
8
9
10
11
12
13
{
"id": 1,
"username": "Bret",
"email": "Sincere@april.biz",
"address": {
"street": "Kulas Light",
"suite": "Apt. 556",
"city": "Gwenborough",
"zipcode": "92998-3874"
},
"admin": false,
"hobbies": null
}

dump() 함수: Python 객체를 JSON 문자로 변환해서 바로 쓰기

Python 객체를 JSON 문자로 변환한 결과를 어딘가에 바로 쓰고(write) 싶은 경우에는 dumps() 대신에 dump() 함수를 사용합니다.

1
2
3
4
5
6
import json

json_object = {""" 위와 동일 """}

with open('dump.json', 'w') as f:
json_string = json.dump(json_object, f, indent=2)
  • dump.json
1
2
3
4
5
6
7
8
9
10
11
12
13
{
"id": 1,
"username": "Bret",
"email": "Sincere@april.biz",
"address": {
"street": "Kulas Light",
"suite": "Apt. 556",
"city": "Gwenborough",
"zipcode": "92998-3874"
},
"admin": false,
"hobbies": null
}

일반적으로 이와 같은 방식으로 JSON 문자열을 파일이나 HTTP 응답의 전문(body)에 씁니다.

이상으로 파이썬의 json 모듈의 loads(), dumps(), dump() 함수를 사용하는 법을 살펴보았습니다.

참고

공유하기