Programming/Python

[Python] json 모듈 사용하기 :: String을 Dict으로 변환

쌍쌍바나나 2016. 5. 25. 22:00
반응형

들어가며

  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'}


반응형