반응형
안녕하세요. TDR입니다.
오늘은 python에서 형태가 유사한 Dictonary와 json 간의 변환 및 각 특징에 대해서 알아보겠습니다.
import json
## 변환용 dict 정의
dict_object = {'Key': 'Name', 'Value': 'Apple'}
## dict를 json으로 변환
# 만약 그냥 string으로 저장한다면
# json_object = '''{
# "Key": "Name",
# "Value": "Apple"
#}'''
json_object = json.dumps(dict_object)
## json format은 기본적으로 str 형으로 인식됨
print(type(dict_object)) # <class 'dict'>
print(type(json_object)) # <class 'str'>
## 딱 봐서는 큰 차이는 없지만 dict에서는 '(작은 따옴표)가
## json에서는 "(쌍 따옴표)로 바뀐 것을 확인할 수 있음
print(dict_object) # {'Key': 'Name', 'Value': 'Apple'}
print(json_object) # {"Key": "Name", "Value": "Apple"}
new_json_object = json_object.replace('Apple', 'Banana')
## json을 dict로 변환
new_dict_object = json.loads(new_json_object)
## 17 line에서 변경한 Banana 값으로 제대로 변환
print(type(new_dict_object)) # <class 'dict'>
print(type(new_json_object)) # <class 'str'>
print(new_dict_object) # {'Key': 'Name', 'Value': 'Banana'}
print(new_json_object) # {"Key": "Name", "Value": "Banana"}
json_object는 결국 string이기 때문에 replace()를 통해 값을 변경 할 수 있습니다. 문제는 json에 동일한 값이 여러개 있을 경우 해당 값들도 모두 변경 된다는 것입니다. 반면, dict의 경우 특정 값만을 지정해서 변경이 가능합니다. 관련한 내용은 아래 link를 참조 바랍니다.
위의 예시에서 본 dumps()와 loads() 말고 dump(), load() 함수도 있습니다.
## dump() 함수를 사용하여 파일에 쓰기
dict_obejct = {
'name': 'John',
'age': 30,
'city': 'New York'
}
## dump()를 사용하여 dict object를 json format string으로 file로 저장
with open('temp.json', 'w') as file:
json.dump(dict_obejct, file)
## load() 함수를 사용하여 파일에서 JSON 데이터를 읽어와 dict로 변환
with open('temp.json', 'r') as file:
dict_obejct = json.load(file)
print(dict_obejct)
위의 예시를 보면 아시겠지만, dumps(), loads()는 string 또는 dictonary 객체간 변환을 해주는 함수이고, dump(), load()는 dictonary 객체를 json format의 파일로 저장 또는 읽어 오는 함수입니다.
반응형
'Computer & Program > python' 카테고리의 다른 글
[python] String - 02 (0) | 2024.01.31 |
---|---|
[python] String - 01 (0) | 2024.01.30 |
[python] map 함수 (1) | 2024.01.25 |
[python] Dictionary (0) | 2024.01.24 |
[python] Copy (Shallow vs Deep) (0) | 2024.01.19 |
댓글