본문 바로가기

python

python json 모듈로 json 데이터 다루기

python은 json 데이터를 처리하기 위해 내장 모듈인 json을 사용할 수 있습니다.

일단 json을 사용하기 위해 import json을 선언 해준다.

loads()

JSON 문자열을 python 객체로 변환할 수 있게 해준다.

import json

json_data = '''{
    "id": 1,
    "fullname": "Dana",
    "email": "dana222@test.com",
    "admin": False
}'''

json_data = json.loads(json_data)
print(json_data)

파일에 저장되어있는 JSON문자열을 읽거나, HTTP 요청의 body를 읽을때 자주 사용함

dumps()

python 객체를 json문자열로 변환할 수 있게 해준다.

import json

json_data = {
  "id": 1,
  "fullname": "Dana",
  "email": "dana222@test.com",
  "admin": False
}

json_dumps = json.dumps(json_data, indent=2)
print(json_data)

.dumps() 할때 약간의 팁이 있다면 json문자열은 한줄로 나타내어지기 때문에 {"id":1, "fullname": "Dana" ...} 사용자 입장에서 가독성이 떨어지는건 당연할 수 있다. 이럴때 dumps()에 indent라는 파라미터에 숫자를 표기하게 되면 그 숫자만큼 들여쓰기가 되어 json문자열로 변환이 된다.

load()

json 파일에 저장된 데이터를 읽어서 python 객체로 불러오고 싶은 경우에는 loads() 대신 load() 를 사용하면 된다.

json_data = {
  "id": 1,
  "fullname": "Dana",
  "email": "dana222@test.com",
  "admin": False
}
import json

with open('data.json') as f:
  json_object = json.load(f)

dump()

python 객체를 json 문자로 변환한 결과 파일에 바로 쓰고 싶은 경우엔 dumps() 말고 dump() 를 사용하면 된다.

import json

json_data = {
  "id": 1,
  "fullname": "Dana",
  "email": "dana222@test.com",
  "admin": False
}

with open('data.json', 'w') as f:
  json_string = json.dump(json_object, f, indent=2)
// data.json으로 저장된 파일
json_data = {
  "id": 1,
  "fullname": "Dana",
  "email": "dana222@test.com",
  "admin": False
}

일반적으로 json 포멧의 HTTP 요청에서 body를 쓸대도 해당 방식으로 사용한다.

잘알고 있으면 괜찮지만 loads(), load() / dumps(), dump() 을 사용함에 있어서 헷갈리지 말자.