使用loads方法即可将json字符串转换成python对象,对应关系如下:
JSON | Python |
---|---|
object | dict |
array | list |
string | unicode |
number (int) | int, long |
number (real) | float |
true | True |
false | False |
null | None |
一。但在使用json模块的时候需要注意的是对中文的处理,loads方法如果传入的字符串的编码不是UTF-8的话,需要用encoding指定字符编码
#!/usr/bin/env python # -*- coding:utf-8 -*-import json js = json.loads('{"insun": "泰囧 / 人在囧途2 / Lost in Thailand "}') print json.dumps(js) print json.dumps(js,ensure_ascii=False)
二。如果传入的字符串的编码不是UTF-8的话,需要用encoding指定字符编码
对于:
dataDict = json.loads(dataJsonStr); |
其中dataJsonStr是json字符串,如果其编码本身是非UTF-8的话,比如是GB2312的,那么上述代码,就会导致出错。改为对应的:
dataDict = json.loads(dataJsonStr, encoding="GB2312"); |
就可以了。
此处,即对应着上面函数解释中的:
If s is a str instance and is encoded with an ASCII based encoding other than UTF-8 (e.g. latin-1), then an appropriate encoding name must be specified
三。如果要解析的字符串,本身的编码类型,不是基于ASCII的,那么,调用json.loads之前,需要先将对应字符串,转换为Unicode类型的
还是以上述的:
dataDict = json.loads(dataJsonStr, encoding="GB2312");
为例,即使你此处的字符串dataJsonStr,已经通过encoding指定了合适的编码,但是由于其中,包含了其他的编码的字符,比如我本身 dataJsonStr是GB2312的字符,但是其中又包含了的一些日文字符,此时,json.loads还是会出错,因为此处的 dataJsonStr不是以ASCII为基础的字符编码,所以,需要先去将dataJsonStr转换为Unicode,然后再调用 json.loads,就可以了。
代码如下:
dataJsonStrUni = dataJsonStr.decode("GB2312"); |
.html
参考:
python json 中文
Python JSON模块解码中文的BUG
/
使用python处理json
/?p=990
python下调用json.dumps中文显示问题解决办法
Python解析json数据结构范例
本文发布于:2024-01-29 10:38:50,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170649593514690.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |