ㅍㅍㅋㄷ

python dictionary 를 json 으로 변환 본문

Programming/Python

python dictionary 를 json 으로 변환

클쏭 2016. 5. 19. 19:10

python dictionary 를 json 으로 변환


Python 의 자료형 중 가장 많이 사용되는 것 중 하나가 딕셔너리(dictionary) 이다. 

특히 API를 이용해 외부에 데이터를 전달할때 보통 json 형태가 사용되는데, python 에서 json 형태와 가장 유사한 자료형이 바로 딕셔너리 이다. 


딕셔너리를 json 으로 변환하는 방법은 매우 간단하다. 

python 의 json 이라는 라이브러리를 import 하여 사용하면 된다. 


json 모듈에 대한 설명은 python docs에 자세히 설명되어 있다.  ( 링크는 여기 )




dictionary 를 json 으로 변환


import json


dict1 = { 'name' : 'song', 'age' : 10 }


print "dict1 = %s" % dict1

print "dict1 type = %s" % type(dict1)

print "================"


# CONVERT dictionary to json using json.dump

json_val = json.dumps(dict1)


print "json_val = %s" % json_val

print "json_val type = %s" % type(json_val)


결과는 아래와 같다. 


dict1 = {'age': 10, 'name': 'song'}

dict1 type = <type 'dict'>

================

json_val = {"age": 10, "name": "song"}

json_val type = <type 'str'>


딕셔너리를 json 으로 변환후 출력해 보면 그 형태는 큰 변화가 없다. 


그러나 자료형을 출력해 보면 위와 같이 딕셔너리는 dict 형이며, 

json의 경우는 string 형태로 변환 되었음을 알 수 있다. 


따라서 json으로 변환한 경우는 dictionary 처럼 key를 통해 데이터 접근이 불가하다. 


>>> print dict1['name']

song

>>> print json_val['name']

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

TypeError: string indices must be integers, not str




json 을 dictionary 로 변환


json 을 역으로 dictionary 형태로도 변환이 가능하다. 

json.loads 를 사용하면 간단하다. 


dict2 = json.loads(json_val)




웹개발을 하다 보면, UI는 Javascript를 사용하고, 내부 application 로직은 python 으로 개발하는 경우가 많은데, 

javascript와 python 사이 데이터를 주고 받을 때 위와 같이 json 변환을 이용하면 간편히 해결 된다. 




[참고]

  • https://docs.python.org/2/library/json.html


Comments