Python

[Python] JSON 데이터 다루기

비번변경 2021. 11. 1. 21:18

JSON (제이슨, JavaScript Object Notation)

속성 - 값 쌍 또는 키 - 값 쌍으로 이루어진 데이터 개체를 전달하기 위한 개방형 표준 포맷

 {
    "이름": "홍길동",
    "나이": 25,
    "성별": "여",
    "주소": "서울특별시 양천구 목동",
    "특기": ["농구", "도술"],
    "가족관계": {"#": 2, "아버지": "홍판서", "어머니": "춘섬"},
    "회사": "경기 수원시 팔달구 우만동"
 }

인간이 읽을 수 있는 텍스트를 사용하며, 언어 독립형 데이터 포맷이다.

비동기 브라우저/서버 통신에 사용하며 XML을 대체한다.

 

 

Python에서는 내장 모듈인 json을 이용해 JSON 데이터를 처리할 수 있다.

 

json 모듈 사용 방법

loads()

json 문자열을 python dictionary 객체로 변환한다.

import json

text = '''{"dog": [
    {"name": "식빵", "family": "웰시코기", "age": 1, "weight": 2.14},
    {"name": "콩콩", "family": "포메라니안", "age": 3, "weight": 2.5},
    {"name": "젤리", "family": "푸들", "age": 7, "weight": 3.1}
]}'''

json_object = json.loads(text)

 

load()

json 파일을 python dictionary 객체로 변환한다.

import json

with open('data.json') as f: # block 종료 시 file close
    json_object = json.load(f)

 

Value 접근

dictionary 객체이므로 get() 또는 대괄호 안에 Key를 지정하여 접근한다.

print(json_object.get("dog"))
print(json_object['dog'])

 

dumps()

python dictionary 객체를 json 문자열로 변환한다.

indent 값은 들여쓰기들여 쓰기 수준으로, 0인 경우에는 개행 및 들여 쓰기 없이 한 줄로 변환된다.

import json

d = {"dog": [
    {"name": "식빵", "family": "웰시코기", "age": 1, "weight": 2.14},
    {"name": "콩콩", "family": "포메라니안", "age": 3, "weight": 2.5},
    {"name": "젤리", "family": "푸들", "age": 7, "weight": 3.1}
]}

json_text = json.dumps(d, indent=2) # indent는 들여쓰기 레벨. 읽기 좋은 형태로 변환
print(json_text)

 

출력 결과

json.dumps()

 

dump()

python dictionary 객체를 json 파일에 저장한다.

import json

json_object = {"dog": [
    {"name": "식빵", "family": "웰시코기", "age": 1, "weight": 2.14},
    {"name": "콩콩", "family": "포메라니안", "age": 3, "weight": 2.5},
    {"name": "젤리", "family": "푸들", "age": 7, "weight": 3.1}
]}

with open('data.json', 'w') as f:
    json_string = json.dump(json_object, f, indent=2)

 


참고 문서

https://ko.wikipedia.org/wiki/JSON

https://www.daleseo.com/python-json/