python生成json(dump/dumps)

解析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

猜你喜欢

转载自blog.csdn.net/u010895119/article/details/77854390