pyhton标准库 json
2016-03-08 17:27
513 查看
使用loads方法即可将json字符串转换成python对象,对应关系如下:
其中dataJsonStr是json字符串,如果其编码本身是非UTF-8的话,比如是GB2312的,那么上述代码,就会导致出错。
改为对应的:
就可以了。
此处,即对应着上面函数解释中的:
代码如下:
#JSON Python object dict array list string unicode number (int) int, long number (real) float true True false False null None
1 使用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)
results: {"insun": "\u6cf0\u56e7 / \u4eba\u5728\u56e7\u90142 / Lost in Thailand "} {"insun": "泰囧 / 人在囧途2 / Lost in Thailand "}
2 如果传入的字符串的编码不是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
3 如果要解析的字符串,本身的编码类型不是基于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"); dataDict = json.loads(dataJsonStrUni, encoding="GB2312");
相关文章推荐
- js DOM节点的创建、插入、删除、查找、替换方法学习与总结
- thinkjs crud练习
- 0x05: post 守护进程(deamon) json 任务调度
- javascript对结点的增、删、改
- ArcGIS API for JavaScript开发笔记(一)GP模型创建及服务发布
- js如何判断一个对象是不是Array
- js中Math方法的小技巧
- JavaScript 解析json例子
- Jsoup解析HTML、加载文档等实例
- JS键盘事件种类、兼容和优化
- js,base64加密
- JS数字转大写中文金钱JS函数
- Extjs4----anchor布局
- 对js原型对象的拓展和原型对象的重指向的区别的研究
- 共享onload事件的使用(javascriptDOM编程艺术学习笔记)
- 详解javascript闭包
- JS 连续等号赋值问题
- js Date日期格式化方法
- JSON详解
- Javascript学习--ES6学习--Number.isInteger()方法