json.dumps()、json.laods()、demjson相关
这两者在python中,无非就是在字符串和字典之间进行转换。而只不过字符串状态时,满足json的格式。
json.dumps(),将字典转变成json字符串。
a = {"a":123,"b":456}res = json.dumps(a)print(type(res),res)
输出结果:
<class 'str'> {"a": 123, "b": 456}
json.loads(),将json字符串变成字典。
b = '{"a":123,"b":456}'res = json.loads(b)print(type(res1),res)
输出结果:
<class 'dict'> {'a': 123, 'b': 456}
到这里,json.loads和json.dumps的最根本区别就已经结束了。
目前看起来一切正常,但实际上json.loads这里有很多坑和细节。
比如我把程序写成这样:
b = "{'a':123,'b':456}"b = "{a:123,b:456}" #这两种写法都不行res = json.loads(b)print(type(res1),res)
就会报错。因为在这个字符串中,json的值用的不是双引号。即使是用单引号甚至没有括号的情况,都会无法解析。
这就很麻烦,因为比如有时候爬取网页上的一些信息,得到的json字符串常常不是标准的,有的就没有引号等,如果用json.loads的话,就会很容易解析不出来。
解决方法:
使用demjson
demjson的decode方法,作用也是将json字符串变成字典,但它具有一定程度的容错性。
b1 = "{a:123,b:456}"b2 = "{'a':123,'b':456}"res1 = demjson.decode(b1)print(type(res1),res1)res2 = demjson.decode(b2)print(type(res2),res2)
输出结果:
<class 'dict'> {'a': 123, 'b': 456}
<class 'dict'> {'a': 123, 'b': 456}
可以看出,不管有没有引号、引号选何种形式,都可以被解出。当然,这里都只是英文的情况,如果要用中文,可能完全没引号是不行的。
结论:
demjson.decode()与json.loads()功能一致,都是将json字符串转换成字典。但前者容错性更好,使用起来更方便。
另外,demjson.encode()方法则对应着json.dumps()方法,都是将字典转换成json字符串。但因为字典的形式都是python基础语法定死的,要用的话肯定都是合法的字典,所以这里没有容错性上的区别。
json.dumps()、json.laods()、demjson相关相关推荐
- python(json):序列化 、反序列化 --- json.dump() / json.dumps() / json.load() / json.loads()的使用
序列化 通过将对象序列化可以将其存储在变量或者文件中,可以保存当时对象的状态,实现其生命周期的延长.并且需要时可以再次将这个对象读取出来.json序列化提供了了2个方法,json.dumps()和js ...
- python中dumps和dump区别_python json.dumps() json.dump()的区别
之前写的很简单,只有几句话,最近发现本文是本博客阅读量最大的一篇文章,以为这样有种把人骗进来的感受,因而又细化了一些.若是还有很差的地方,欢迎指出.python 首先说明基本功能:json dumps ...
- python json dumps 自定义_Python json.dumps 自定义序列化操作
def login_ajax(request): if request.method == "GET": return render(request, 'login_ajax.ht ...
- python中json.dump() 和 json.dumps() 有那些区别?
JSON字符串用json.dumps, json.loads JSON文件名用json.dump, json.load json 模块提供了一种很简单的方式来编码和解码JSON数据. 其中两个主要的函 ...
- python的json dump_python中json.dump和json.dumps的区别
json.dumps (&json.loads): 是对数据的操作: json.dump (&json.load): 也是类似的功能,只是与文件操作结合起来了. 1. json.dum ...
- python json dumps 自定义_Python json.dumps()用法及代码示例
JSON的完整形式是JavaScript Object Notation.这意味着将使用编程语言的文本组成的脚本(可执行)文件用于存储和传输数据. Python通过名为内置的软件包支持JSONjson ...
- python json dumps utf8_Python2操作JSON出现乱码的解决方案
其实刚刚写过一整篇Python编码问题的解决方案,由于JSON又是一种特殊案例(与库相关,与语言本身无关)所以就单独提出来说. 我们来看一个从网上获取json并又存到本地文件的例子 import re ...
- python json.dumps慢_python json.dumps中文乱码问题解决
json.dumps(var,ensure_ascii=False)并不能解决中文乱码的问题 json.dumps在不同版本的Python下会有不同的表现, 注意下面提到的中文乱码问题在Python3 ...
- python json dumps字典后无法json格式化_python字典和json.dumps()的遇到的坑分析
最近项目中需要与管易云erp做对接,看了他的接口文档,php的示例代码,于是用python仿写. 其中传的参数data中前面几个json数据是固定的,最后需要加一个签名,该签名是对前面的json数据字 ...
- python中loads函数_了解python的json.dumps()和json.loads()
Python视频教程专栏介绍了两个概念:转储()和加载() 相关免费学习推荐:python视频教程 第一,概念理解 1.json.dumps()和json.loads()是json格式处理函数(jso ...
最新文章
- 添加绿色版UltraEdit到右键菜单
- 转载:EBS上用过的一些接口表整理信息
- Android Studio 代码自动提示无效
- Requirejs定义模块
- java性能分析与问题定位 实战
- sentinel 时间窗口_Sentinel潜龙勿用篇
- java jpa 规范_Java:在JPA中使用规范模式
- Win32ASM 变长参数的理解
- redis主从配置及无法连接处理
- python通过代理自动发邮件脚本_python自动发送邮件脚本
- c语言指针慕课,C语言指针
- 三年级计算机 键盘指法 教案,人教版三年级信息技术《第一课 键盘操作再加强》教案(精品获奖)...
- Android客户端与PC服务器通过socket进行交互实例
- 从Python爬虫到Spark预处理数据的真实需求[三]
- vue内使用 cytoscape(数据可视化)
- 数加加众包:奔驰“哭诉维权”美女硕士,你“不要脸”的样子真的很美
- 找了好久的perl在window上读excel的脚本
- python做工控机_工控机折腾小记
- docker ubuntu-18.04 实战系列一
- VC++ Tab Control控件的基本用法
热门文章
- 《牛奶可乐经济学》读书笔记
- 单体架构与微服务架构的区别
- idea无法下载源代码
- 关于柔性显示器工作原理及发展前景的探究
- Hi3559AV100 RTSP推H265视频码流使用VLC软件本地直播
- 远程ntp服务器响应模式6查询,H3C WP5048无线PoE注入器 命令参考-Release 2208-6W100
- 【聚合支付】 如何区分界定聚合支付中的“一清”和“二清”?
- 得力针式打印机第一联清晰第二联不清晰解决办法
- matlab ols regress,计量经济学简单线性回归OLS的Matlab程序.pdf
- jena mysql_在Jena框架下基于MySQL数据库实现本体的存取操作