2023-05-13 16:35:46

python json 모듈에서 가장 중요한 함수는 dumps() 함수와 loads() 함수입니다. 이 두 함수는 API에 request 날리고 response 받을 때 많이 사용하게 되는 함수들입니다. 일단 빠르게 정리하고 시작하겠습니다. 

 

json.dumps() vs json.loads()

json.dumps(): 파이썬 딕셔너리 -> JSON 문자열 

json.loads(): JSON 문자열 -> 파이썬 딕셔너리 

 

load 물건을 싣다... 파이썬에서 처리할 수 있게 가져오는 거니...

dump 내버리다... 이제 파이썬 밖 세상으로 내보내는 거니... 

 

위 두 함수를 사용하는 간단한 예시 코드는 다음과 같습니다. 당연히 json 모듈을 import 해야지 사용할 수 있습니다. 

 

import json


json_string = '''{
    "name": "Tom",
    "age": 31,
    "married": false, 
    "hobbies": [
        "Soccer", 
        "Coding", 
        "Piano"
    ]
}'''

json_object = json.loads(json_string)
print(json_object)
print(type(json_object))

json_string = json.dumps(json_object)
print(json_string)
print(type(json_string))

 

 

만약 dumps() 함수를 사용하여 JSON 문자열으로 변환할 때 2칸의 들여쓰기를 넣어줘서 조금 더 보기 좋은 구조를 갖게 하려면 indent=2를 추가로 전달해주면 됩니다. 

 

json_string = json.dumps(json_object, indent=2)

 

 

한글 깨지는 경우 대처 방법

한글이 포함되어 있는 경우 json.dumps() 결과를 보면 다음과 같이 깨져있을 것입니다.

 

import json


dict1 = {
    "name": "심교훈",
    "age": 35,
    "married": True,
    "hobbies": [
        "축구시청",
        "코딩",
        "유튜브시청",
        "자전거"
    ]
}

json_string1 = json.dumps(dict1, indent=2)
print(json_string1)

 

 

이런 경우에는 ensure_ascii를 False로 설정해주면 됩니다. 

 

json_string1 = json.dumps(dict1, indent=2, ensure_ascii=False)

 

 

관련 글

- [AWS] boto3 SageMaker에 배포된 모델에 추론 요청 날리는 방법