使用loads方法即可将json字符串转换成python对象,对应关系如下:
#JSON Python object dict array list string unicode number (int) int, long number (real) float true True false False null None对于: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
还是以上述的:dataDict = json.loads(dataJsonStr, encoding="GB2312")为例,即使你此处的字符串dataJsonStr,已经通过encoding指定了合适的编码,但是由于其中,包含了其他的编码的字符,比如我本身 dataJsonStr是GB2312的字符,但是其中又包含了的一些日文字符,此时,json.loads还是会出错,因为此处的 dataJsonStr不是以ASCII为基础的字符编码,所以,需要先去将dataJsonStr转换为Unicode,然后再调用json.loads,就可以了。 代码如下:
dataJsonStrUni = dataJsonStr.decode("GB2312"); dataDict = json.loads(dataJsonStrUni, encoding="GB2312"); posted on 2016-03-08 17:27 北京涛子 阅读( ...) 评论( ...) 编辑 收藏转载于:https://www.cnblogs.com/liujitao79/p/5254842.html
相关资源:Python标准库json模块和pickle模块使用详解