[파이썬] json 모듈로 JSON 데이터 다루기
Nov 23, 2019 · 3 min read



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

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

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

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() 함수를 사용합니다.

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)
  • 콘솔 출력
{"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 문자열로 변환이 됩니다.

import json

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

json_string = json.dumps(json_object, indent=2)
print(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
}

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

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

import json

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

with open('dump.json', 'w') as f:
    json_string = json.dump(json_object, f, indent=2)
  • dump.json
{
  "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() 함수를 사용하는 법을 살펴보았습니다.

참고






Engineering Blog  by Dale Seo