python生成json(dump/dumps)

来源:互联网 发布:奚梦瑶 台步 知乎 编辑:程序博客网 时间:2024/05/29 03:23

解析json的链接:http://blog.csdn.net/u010895119/article/details/77377413
python的encode功能,对我来说使用场景比较少,但最新遇到了一个问题:直接从接口获取的json串中,如果有中文,则中文在json串中是以ASCII码存在的,这个问题用dump/dumps的方法解决了,所以记下来理一下(python解释器版本:2.7)

  • decode & encode
    decode:将json文件或json字符串解析成python的数据格式
    encode则反过来,将python的一些数据格式转换成json文件或json字符串,并且可以很简单的生成美观的json文件/字符串

  • dumps/loads & dump/load
    dumps/loads:操作字符串
    dump/load:操作文件

假如把从接口获取到的json保存在example.json中:

{"page": "user", "uri": "/userinfo", "elements": [{"var_name": "username", "description": "登录用户名"}]}

加载并查看:

>>> with open('example.json', 'r') as jsonfile:...     json_string = json.load(jsonfile)...   # 直接打印,中文是ASCII码  >>> print json_string{u'elements': [{u'var_name': u'username', u'description': u'\u767b\u5f55\u7528\u6237\u540d'}], u'page': u'user', u'uri': u'/userinfo'}# 使用dumps转换一下,打印出中文>>> json_data = json.dumps(json_string, ensure_ascii=False)>>> print json_data{"elements": [{"var_name": "username", "description": "登录用户名"}], "page": "user", "uri": "/userinfo"}# 也可以打印的美观一些>>> json_data2 = json.dumps(json_string, ensure_ascii=False, indent=1)>>> print json_data2{ "elements": [  {   "var_name": "username",    "description": "登录用户名"  } ],  "page": "user",  "uri": "/userinfo"}

解释:json.dumps中传入ensure_ascii=False,即将ASCII码转换成中文显示出来。json.dumps将python的字典转换成了json对象(python显示为unicode)

Reference
https://docs.python.org/2/library/json.html#basic-usage

原创粉丝点击