Python中如何将字典转换成JSON格式字符串?

Python中如何将字典(dict)类型对象转换成JSON格式字符串呢?

喜欢这个问题 | 分享 | 新建回答

回答

冯纪忠雄

Feb 25, 2019
0 赞

方法一:使用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格式内部的引号是双引号而不是单引号。