Python中如何将字典(dict)类型对象转换成JSON格式字符串呢?
冯纪忠雄
方法一:使用tornado.escape模块
方法有不只一种,首先说一下,个人比较喜欢的方式,那就是利用tornado框架中的escape模块即可。tornado.escape.json_encode方法可以将字典(dict)类型变量转换成json格式字符串;tornado.escape.json_decode方法可以将json格式字符串解析成python的字典(dict)类型变量。
>>> import tornado.escape >>> a = { "k1": "v1", "k2": "v2", "k3": "v3" } >>> b = tornado.escape.json_encode( a ) # 将字典转换成字符串 >>> b '{"k3": "v3", "k2": "v2", "k1": "v1"}' >>> type( b ) <type 'str'> >>> c = tornado.escape.json_decode( b ) # 将字符串解析成字典 >>> c {u'k3': u'v3', u'k2': u'v2', u'k1': u'v1'}
当然,tornado不是内置的,需要手动安装一下,很简单的。(tornado安装方式点击这里)
方法二:使用python的内置模块json
json.dumps方法可以将字典(dict)类型变量转换成json格式字符串;
json.loads方法可以将json格式字符串解析成python的字典(dict)类型变量。
>>> import json >>> a = { "k1": "v1", "k2": "v2", "k3": "v3" } >>> b = json.dumps( a ) >>> b '{"k3": "v3", "k2": "v2", "k1": "v1"}' >>> type(b) <type 'str'> >>> c = json.loads( b ) >>> c {u'k3': u'v3', u'k2': u'v2', u'k1': u'v1'}
str函数是一个雷!不要用这种方法!这是一个错误的方法。
>>> a = { "k1": "v1", "k2": "v2", "k3": "v3" } >>> str( a ) "{'k3': 'v3', 'k2': 'v2', 'k1': 'v1'}"
看上去也是可行的,但是有问题的,看引号,对于JSON格式字符串,双引号和单引号不是等价的,有习惯与规范的,否则JavaScript前端或者后端的很多语言解析时会出错的。一般来说,JSON格式内部的引号是双引号而不是单引号。