【转载】json数据的中文显示问题 python

Ps:http://blog.csdn.net/jenyzhang/article/details/45890541    作者:YanniZhang

json数据的中文显示问题 python

       post请求数据时,响应的内容是json数据,但是返回的json数据中文显示有问题,变成  \uXXX的形式。这是因为中文以 unicode 编码了,而默认是以ASCII解析的,中文不在ASCII编码中,所以无法显示。这时候我们可以用 import json 然后调用json.loads() 和json.dumps()来使中文正确显示。

      具体怎么做呢?用下面的代码即可实现(data是中文不能正常显示的json串,newjson是处理后中文正常显示的字符串)

         

[python]  view plain  copy
  1. import json  
  2.   
  3. myjson=json.loads(data) #data是向 api请求的响应数据,data必须是字符串类型的  
  4. newjson=json.dumps(myjson,ensure_ascii=False)   #ensure_ascii=False 就不会用 ASCII 编码,中文就可以正常显示了  
  5.   
  6. print(newjson)  

     首先需要了解一下encoding与decoding

     encoding:编码,把Python对象转换成json字符串

     decoding:解码,把json字符串解码转换成Python对象


1.  json.loads()  :把json字符串解码转换成Python对象

     

   从上图可以看到  json.loads()的参数说明。注意这里的“s”应该是  一个包含JSON 文档的“str”实例(也就是上面说的 data应该是字符串)


2.json.dumps():  把Python对象转换成json字符串


 从上图可以看到  json.loads()的参数说明。注意这里的"obj"应该是Python对象,参数“ensure_ascii”默认值是True(这就是为什么中文无法正常显示的原因),所以我们要把这个参数的值设为False.


下面是我的代码:(我用的是python3.4)

[python]  view plain  copy
  1. import json  
[python]  view plain  copy
  1. import urllib.request  
[python]  view plain  copy
  1. req = urllib.request.Request(url,postData,header)   # 把url,postData,header换成你自已的值  
  2. response=urllib .request .urlopen(req)   #response是file-like的对象  
  3. data=response.read()         #data是bytes 类型  
  4. data = ungzip(data)  #ungzip是我自己写的解压函数  
  5. data=data.decode()    #decode后,data从bytes类型转换成str  
  6. #处理data的中文  
  7. myjson=json.loads(data)  #data的type必须为str.   
  8. newjson=json.dumps(myjson,ensure_ascii=False)  
[python]  view plain  copy
  1. print(newjson)    

附上Python中的json处理的官方文档:https://docs.python.org/3.4/library/json.html

以及有用的链接:http://www.2cto.com/kf/201306/222129.html


另外:你可以通过help(json.dumps)查看这个函数的有关参数信息



通过 help(json.loads) 查看该函数的参数信息:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值