Python JSON 데이타
1. JSON
JSON은 JavaScript Object Notation의 약자로서 JavaScript 문법에 영향을 받아 개발된 Lightweight한 데이타 표현 방식입니다. JSON은 데이타를 교환하는 한 포맷으로서 그 단순함과 유연함 때문에 널리 사용되고 있습니다. 특히 웹 브라우져와 웹서버 사이에 데이타를 교환하는데 많이 사용되고 있습니다. 가장 많이 사용되는 JSON 포맷은 Key-Value Pair의 컬렉션입니다.
Python은 기본적으로 JSON 표준 라이브러리(json)를 제공하고 있는데, "import json" 을 사용하여 JSON 라이브러리를 사용할 수 있습니다. (주: Python 2.6 이상).
JSON 라이브러리를 사용하면, Python 타입의 Object를 JSON 문자열로 변경할 수 있으며(JSON 인코딩), 또한 JSON 문자열을 다시 Python 타입으로 변환할 수 있습니다. (JSON 디코딩).
2. JSON 인코딩
Python Object (Dictionary, List, Tuple 등) 를 JSON 문자열로 변경하는 것을 JSON Encoding 이라 부릅니다. JSON 인코딩을 위해서는 우선 json 라이브러리를 import 한 후, json.dumps() 메서드를 써서 Python Object를 문자열로 변환하면 됩니다.
아래 코드는 customer 라는 Python Dictionary 객체를 JSON 문자열로 인코딩하는 예입니다. 결과물 jsonString은 JSON 표현을 갖는 문자열(str 타입)입니다.
import json
# 테스트용 Python Dictionary
customer = {
'id': 123456,
'name': '홍길동',
'history': [
{'date': '2017-03-11', 'item': 'iPhone'},
{'date': '2018-02-01', 'item': 'iPad'},
]
}
# JSON 인코딩
jsonString = json.dumps(customer)
# 문자열 출력
print(jsonString)
print(type(jsonString)) # class str
위의 코드를 실행하면 JSON 문자열이 한 줄로 길게 표현됨을 알 수 있습니다. 이렇게 축약된 JSON 문자열은 다른 컴퓨터나 네트워크 상에 보낼 때 유용하지만, 화면에 표시할 필요가 있을 경우는 읽기가 불편하죠. JSON 문자열을 읽기 편하게 할 필요가 있을 경우에는, 아래와 같이 "indent" 옵션을 json.dumps() 메서드 안에 지정하면 된다. 코드 아래는 Identation 이 사용된 JSON 문자열 표현이다.
jsonString = json.dumps(customer, indent=4)
print(jsonString)
{
"history": [
{
"date": "2017-03-11",
"item": "iPhone"
},
{
"date": "2018-02-01",
"item": "iPad"
}
],
"id": 123456,
"name": "홍길동"
}
import json
# 테스트용 JSON 문자열
jsonString = '{"name": "홍길동", "id": 123456, "history": [{"date": "2017-03-11", "item": "iPhone"}, {"date": "2018-02-01", "item": "iPad"}]}'
# JSON 디코딩
dict = json.loads(jsonString)
# Dictionary 데이타 체크
print(dict['name'])
for h in dict['history']:
print(h['date'], h['item'])