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)
출력 결과
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)
참고 문서