들어가며
HTTP 통신을 하면서 data를 주고 받을 경우에 json형태로 데이터를 주고 받을 때가 많습니다. 또한 python에서는 dict의 type을 자주 사용하기 때문에 String을 dict으로 변환할 줄 알아야 하는데요. 아래 예제 코드는 json, dict 형태의 string을 json모듈을 이용해 dict의 type으로 변환해주는 코드입니다. python을 다룰때 가장 많이 사용하는 object중 하나가 dict이기 때문에 dict, json, string간의 변환이 자유로우면 상당한 무기가 될 수 있습니다.
예제코드
import json
dict_string = '{"foo":"bar", "foo2":"bar2"}'
# type(dict_string)
#
dict = json.loads(dict_string)
dict
# {u'foo': u'bar', u'foo2': u'bar2'}
# type(dict)
예외처리
s = "{'muffin' : 'lolz', 'foo' : 'kitty'}" 를 json.loads(s)를 바로하는 경우에는 아래 내용의 에러가 발생합니다. 이런 경우에는 '을 "로 변경해줘야 합니다. 파이썬에서는 "을 사용하기 위해서는 앞에 \을 붙이는 것을 잊으면 안됩니다.
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/usr/lib/python2.7/json/__init__.py", line 338, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Expecting property name: line 1 column 2 (char 1)
import json
s = "{'muffin' : 'lolz', 'foo' : 'kitty'}"
json_acceptable_string = s.replace("'", "\"")
d = json.loads(json_acceptable_string)
# d = {u'muffin': u'lolz', u'foo': u'kitty'}
'Programming > Python' 카테고리의 다른 글
[Python] Enum 사용하는 방법 및 예제코드 (0) | 2016.05.31 |
---|---|
[Python] collections를 이용한 Dictionary 정렬하기 (0) | 2016.05.25 |
[Python] timestamp를 datetime으로, datetime을 timestamp로 변환하는 방법 (0) | 2016.05.25 |
[Python] Python Singleton Pattern (0) | 2016.05.23 |
[Python] Type Class와 Meta Class (3) | 2016.05.23 |