json 기본 개념
python 입장에서보는 구조는 list, dictionary 2가지 데이터가 혼합된 형태입니다. list는 [ value, value, ... ] 사이의 값을 표현하며, dictionary는 { key:value, key:value, ... } 로 표현되며 key:value 형태의 쌍을 지닙니다. value 는 또 다른 list나 dictionary가 될 수 있습니다. json 규격에서 key의 중복을 할 수 없다 라는 표현은 없지만 python에서는 dict에 loading이 되므로 뒤쪽에 갱신되는 값에 의해서 변경됩니다.예)
{ "TAG1":10, "TAG2":20, "TAG3":[30,40,50], "TAG4":{"SUB1":5,"SUB2":6}, "TAG1":1 }
python으로 값을 읽을 때의 결과)
{'TAG1': 1, 'TAG2': 20, 'TAG3': [30, 40, 50], 'TAG4': {'SUB1': 5, 'SUB2': 6}}
TAG1이 1로 변경됨을 알 수 있습니다.
json 파일 열기
json 모듈 사용하여 load() 함수 호출하면 dict class타입으로 리턴합니다.
import json file = open("test.json","r",encoding='utf-8') jsondata = json.load(file) print(type(jsondata)) print(jsondata)
<class 'dict'> {'TAG1': 1, 'TAG2': 20, 'TAG3': [30, 40, 50], 'TAG4': {'SUB1': 5, 'SUB2': 6}}
json 내용 출력하기
json.dumps()함수를 이용하면 내용을 string으로 출력가능하며 해당 결과를 파일로도 저장할 수 있습니다.import json file = open("test.json","r",encoding='utf-8') jsondata = json.load(file) print(type(jsondata)) print(jsondata) print(json.dumps(jsondata,indent='\t'))
<class 'dict'> {'TAG1': 1, 'TAG2': 20, 'TAG3': [30, 40, 50], 'TAG4': {'SUB1': 5, 'SUB2': 6}} { "TAG1": 1, "TAG2": 20, "TAG3": [ 30, 40, 50 ], "TAG4": { "SUB1": 5, "SUB2": 6 } }
여러개의 json 데이터 합치기
python에 json을 로딩하면 dict class가 됩니다. 결국 dict를 여러개 합치는것과 동일합니다. update()함수를 이용하여 합치면 되는데, 중복된 데이터가 있을 경우 어떤쪽으로 합치는지 살펴보고 진행해야 합니다.예제)
test.json
{ "TAG1":10, "TAG2":20, "TAG3":[30,40,50], "TAG4":{"SUB1":5,"SUB2":6}, "TAG1":1 }
{ "TAG2":3000 }
test.json내용에 test2.json의 TAG2를 적용해서 test.json을 바꾸려고 합니다.
이때의 코드는 아래 참고 바랍니다.
import json file = open("test.json","r",encoding='utf-8') jsondata = json.load(file) file = open("test2.json","r",encoding='utf-8') jsondata2 = json.load(file) print(jsondata) print(jsondata2) print("update") jsondata.update(jsondata2) print(jsondata)
{'TAG1': 1, 'TAG2': 20, 'TAG3': [30, 40, 50], 'TAG4': {'SUB1': 5, 'SUB2': 6}} {'TAG2': 3000} update {'TAG1': 1, 'TAG2': 3000, 'TAG3': [30, 40, 50], 'TAG4': {'SUB1': 5, 'SUB2': 6}}
jsondata.update(jsondata2) 코드에 의해서 update는 dict의 내용을 갱신할때 사용합니다.
json 파일의 저장
앞에서 json을 string으로 변환하는것을 살펴봤습니다. 비슷하게 json.dump()함수를 이용합니다.with open('output.json','w') as f: json.dump(jsondata,f,indent='\t')
전체 예제 코드 입니다.
import json file = open("test.json","r",encoding='utf-8') jsondata = json.load(file) file = open("test2.json","r",encoding='utf-8') jsondata2 = json.load(file) print(jsondata) print(jsondata2) print("update") jsondata.update(jsondata2) print(jsondata) with open('output.json','w') as f: json.dump(jsondata,f,indent='\t')
{'TAG1': 1, 'TAG2': 20, 'TAG3': [30, 40, 50], 'TAG4': {'SUB1': 5, 'SUB2': 6}} {'TAG2': 3000} update {'TAG1': 1, 'TAG2': 3000, 'TAG3': [30, 40, 50], 'TAG4': {'SUB1': 5, 'SUB2': 6}}
{ "TAG1": 1, "TAG2": 3000, "TAG3": [ 30, 40, 50 ], "TAG4": { "SUB1": 5, "SUB2": 6 } }
댓글 없음:
댓글 쓰기