JSON 파일이란?
JSON은 JavaScript Object Notation의 약자로 JavaScript 언어의 자료형을 텍스트로 표현한 포맷입니다. 키-값 쌍으로 이루어져 있으며 사람이 쉽게 읽을 수 있도록 구성되어 있습니다. 서로 다른 시스템간에 데이터를 교환하기에 좋고, 언어가 다르더라도 데이터를 교환하는데 용이하다는 장점이 있습니다.
JSON은 데이터를 키(key)와 값(value)로 표현하고, 이를 중괄호 {}로 감싸서 표현합니다. 예를 들면 {"점수" : 80} 이런 식이죠. 키는 큰따옴표로 묶은 문자열이고, 여러 개의 키-값 쌍을 저장하고 싶다면 쉼표(, comma)로 구분합니다. 만약 값으로 둘 이상의 값들을 사용하고 싶다면 대괄호 []로 묶어주면 됩니다.
ex) {"singer": "TAEYEON", "song": "Weekend", "rank": [10, 5, 1]}
파이썬에서 json 파일 다루기
파이썬에서는 json 라이브러리를 이용해 json 파일을 다룰 수 있습니다. json 라이브러리를 이용하면 파이썬의 dict, list 객체를 json 파일로 변환하여 저장할 수 있습니다.
JSON 쓰고 저장하기
# load json library
import json
# set path and file name
path = "./sample.json"
# write json
data = {}
data['playlist'] = []
data['playlist'].append({
"singer": "TAEYEON",
"song": "Weekend",
"date": 20210706
})
data['playlist'].append({
"singer": "almost monday",
"song": "til the end of time",
"date": 20210709
})
print(data)
{'playlist': [{'singer': 'TAEYEON', 'song': 'Weekend', 'date': 20210706}, {'singer': 'almost monday', 'song': 'til the end of time', 'date': 20210709}]}
import 를 통해 json 라이브러리를 불러옵니다. 딕셔너리 객체인 data를 생성하고, playlist를 키로 하는 빈 리스트를 만들었습니다. 리스트에 원소를 추가할 때는 append를 사용하죠. 리스트에 singer, song, date를 키로 갖는 딕셔너리를 원소로 넣었습니다. 원소 두 개를 넣어주고 출력하면 위와 같이 잘 들어간 것을 확인할 수 있습니다.
# save json
with open(path, 'w') as outfile:
json.dump(data, outfile, indent=4)
json은 위와 같은 코드를 통해 저장할 수 있습니다. indent=4는 가독성이 좋도록 만들어주는 옵션입니다.
JSON 읽기
# load json data
with open(path, "r") as json_file:
json_data = json.load(json_file)
print(json_data)
{'playlist': [{'singer': 'TAEYEON', 'song': 'Weekend', 'date': 20210706}, {'singer': 'almost monday', 'song': 'til the end of time', 'date': 20210709}]}
load 함수를 이용하여 저장했던 json 파일을 불러올 수 있습니다.
JSON 수정하기
# insert element
json_data['playlist'].append({
"singer": "The Volunteers",
"song": "Summer",
"date": 20210527
})
print(json_data)
{'playlist': [{'singer': 'TAEYEON', 'song': 'Weekend', 'date': 20210706},
{'singer': 'almost monday', 'song': 'til the end of time', 'date': 20210709},
{'singer': 'The Volunteers', 'song': 'Summer', 'date': 20210527}]}
사실상 파이썬에서 json은 딕셔너리 객체이기 때문에 딕셔너리를 다루는 방법처럼 json 데이터를 다루면 됩니다. 데이터 삽입 뿐만 아니라 수정, 삭제도 마찬가지입니다.
수정한 json을 새롭게 저장한 후, 명령프롬프트(cmd)에서 파일을 확인해보겠습니다. 윈도우에서는 type이라는 명령어를 이용해 json을 읽을 수 있습니다.
json 파일이 잘 저장되었습니다!
번외: pandas 내장함수로 json 파일을 데이터프레임으로 변환하기
import pandas as pd
pd.json_normalize(json_data['playlist'])
판다스pandas에 내장되어 있는 json_normalize() 함수를 이용하면 json 데이터를 바로 데이터프레임으로 변환할 수 있습니다. 이 함수를 사용하려면 우선 json.loads() 함수를 사용하여 json 문자열을 읽고, 이를 json_normalize()에 전달해야 합니다. 그러면 데이터가 포함된 데이터프레임 객체를 받을 수 있습니다.
참고
https://dojang.io/mod/page/view.php?id=720
https://codechacha.com/ko/python-read-write-json-file/
'繩鋸木斷水滴石穿 > Python' 카테고리의 다른 글
[시각화] subplots와 반복문을 이용하여 그래프 여러개 그리기 (0) | 2021.08.14 |
---|---|
[datetime] 파이썬에서 datetime을 이용하여 날짜, 시간 다루기 (1) | 2021.07.25 |
[pandas] 딕셔너리를 데이터프레임의 열로 변경하는 방법 (0) | 2021.06.07 |
[pandas] object와 category의 차이 (0) | 2021.06.04 |
[100 Numpy exercies] 11번 ~ 20번 (0) | 2021.01.31 |