이 포스트에서는 파이썬으로 JSON 파일을 만드는 방법을 소개합니다.
방식은 파이썬으로 XML 파일 만들기와 비슷하지만 코드는 더욱 간소합니다. json 확장 라이브러리를 사용하면 간단합니다.
import json from collections import OrderedDict # Ready for data group_data = OrderedDict() albums = OrderedDict() group_data["name"] = "여자친구" group_data["members"] = ["소원", "예린", "은하", "유주", "신비", "엄지"] albums["EP 1집"] = "Season of Glass" albums["EP 2집"] = "Flower Bud" albums["EP 3집"] = "Snowflake" albums["정규 1집"] = "LOL" albums["EP 4집"] = "THE AWAKENING" group_data["albums"] = albums # Print JSON print(json.dumps(group_data, ensure_ascii=False, indent="\t") )
이 코드에서 먼저 1번 줄은 JSON 파일을 위한 확장 라이브러리를 읽어들이는 코드입니다. 그리고 2번 줄은 collections 라이브러리에서 OrderedDict 함수를 불러오는 코드입니다. 이 함수를 불러오는 이유는 파이썬의 딕셔너리 자료형은 키값의 ABC순으로 자동으로 정렬이 되는데 자동정렬을 하지 말아야 할 경우가 있기 때문에 이 함수를 이용하는 것입니다.
그리고 데이터를 받아들이기 위한 개체를 생성합니다. group_data 개체는 JSON 파일로 변환되기 위한 개체이고 albums 개체는 albums 키에 들어가기 위한 앨범 목록을 저장하는 개체입니다. 이들은 “key”: value 형식이지만 자동정렬이 되지 않게 할 필요가 있기 때문에 OrderedDict() 함수로 생성합니다.
이제 8번 줄에서 데이터를 입력합니다. 먼저 “name”이라는 키로 “여자친구”라는 값을 입력하고 “members”라는 키로 멤버 이름이 저장된 배열을 입력합니다. 그리고 11번 줄부터 앨범 목록을 순서대로 하나씩 추가하고 이를 group_data에 “albums”라는 키에다가 추가합니다.
이제 모든 데이터의 추가가 끝났으면 이를 출력합니다. 20번 줄의 코드가 그 역할을 합니다. 여기에 옵션이 더 있는데, ensure_ascii=False
옵션을 줘서 유니코드가 아스키 문자로 변환되지 않게 하고 indent="\t"
옵션을 줘서 탭 문자로 들여쓰기를 함으로써 가독성을 향상시킵니다.
결과는 다음과 같습니다.
{ "name": "여자친구", "members": [ "소원", "예린", "은하", "유주", "신비", "엄지" ], "albums": { "EP 1집": "Season of Glass", "EP 2집": "Flower Bud", "EP 3집": "Snowflake", "정규 1집": "LOL", "EP 4집": "THE AWAKENING" } }
보는 바와 같이 데이터가 JSON 형식으로 변해서 표시됩니다. 이제 이 데이터를 가지고 JSON 파일을 생성해 봅시다.
# Write JSON with open('gfriend.json', 'w', encoding="utf-8") as make_file: json.dump(group_data, make_file, ensure_ascii=False, indent="\t")
20번 줄과 같이 파일을 쓰기 모드로 엽니다. encoding="utf-8"
옵션을 주는 것은 파일을 UTF-8 인코딩으로 저장하기 위함입니다.
그리고 21번 줄에서 데이터를 JSON 형식으로 변환하여 저장합니다. 방식은 화면에 직접 출력할 때와 같습니다. 다만, 화면에 직접 출력할 때는 json.dumps
를 썼지만 파일로 저장할 때는 json.dump
로 끝에 s자가 빠짐에 유의할 필요가 있습니다. 그 외의 다른 옵션은 화면에 직접 출력할 때와 같습니다. 여기서 indent="\t"
옵션을 빼면 저장될 때 JSON 데이터가 한 줄에 저장됩니다.
1개의 댓글이 있습니다.