这两者在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相关相关推荐

  1. python(json):序列化 、反序列化 --- json.dump() / json.dumps() / json.load() / json.loads()的使用

    序列化 通过将对象序列化可以将其存储在变量或者文件中,可以保存当时对象的状态,实现其生命周期的延长.并且需要时可以再次将这个对象读取出来.json序列化提供了了2个方法,json.dumps()和js ...

  2. python中dumps和dump区别_python json.dumps() json.dump()的区别

    之前写的很简单,只有几句话,最近发现本文是本博客阅读量最大的一篇文章,以为这样有种把人骗进来的感受,因而又细化了一些.若是还有很差的地方,欢迎指出.python 首先说明基本功能:json dumps ...

  3. python json dumps 自定义_Python json.dumps 自定义序列化操作

    def login_ajax(request): if request.method == "GET": return render(request, 'login_ajax.ht ...

  4. python中json.dump() 和 json.dumps() 有那些区别?

    JSON字符串用json.dumps, json.loads JSON文件名用json.dump, json.load json 模块提供了一种很简单的方式来编码和解码JSON数据. 其中两个主要的函 ...

  5. python的json dump_python中json.dump和json.dumps的区别

    json.dumps (&json.loads): 是对数据的操作: json.dump (&json.load): 也是类似的功能,只是与文件操作结合起来了. 1. json.dum ...

  6. python json dumps 自定义_Python json.dumps()用法及代码示例

    JSON的完整形式是JavaScript Object Notation.这意味着将使用编程语言的文本组成的脚本(可执行)文件用于存储和传输数据. Python通过名为内置的软件包支持JSONjson ...

  7. python json dumps utf8_Python2操作JSON出现乱码的解决方案

    其实刚刚写过一整篇Python编码问题的解决方案,由于JSON又是一种特殊案例(与库相关,与语言本身无关)所以就单独提出来说. 我们来看一个从网上获取json并又存到本地文件的例子 import re ...

  8. python json.dumps慢_python json.dumps中文乱码问题解决

    json.dumps(var,ensure_ascii=False)并不能解决中文乱码的问题 json.dumps在不同版本的Python下会有不同的表现, 注意下面提到的中文乱码问题在Python3 ...

  9. python json dumps字典后无法json格式化_python字典和json.dumps()的遇到的坑分析

    最近项目中需要与管易云erp做对接,看了他的接口文档,php的示例代码,于是用python仿写. 其中传的参数data中前面几个json数据是固定的,最后需要加一个签名,该签名是对前面的json数据字 ...

  10. python中loads函数_了解python的json.dumps()和json.loads()

    Python视频教程专栏介绍了两个概念:转储()和加载() 相关免费学习推荐:python视频教程 第一,概念理解 1.json.dumps()和json.loads()是json格式处理函数(jso ...

最新文章

  1. 添加绿色版UltraEdit到右键菜单
  2. 转载:EBS上用过的一些接口表整理信息
  3. Android Studio 代码自动提示无效
  4. Requirejs定义模块
  5. java性能分析与问题定位 实战
  6. sentinel 时间窗口_Sentinel潜龙勿用篇
  7. java jpa 规范_Java:在JPA中使用规范模式
  8. Win32ASM 变长参数的理解
  9. redis主从配置及无法连接处理
  10. python通过代理自动发邮件脚本_python自动发送邮件脚本
  11. c语言指针慕课,C语言指针
  12. 三年级计算机 键盘指法 教案,人教版三年级信息技术《第一课 键盘操作再加强》教案(精品获奖)...
  13. Android客户端与PC服务器通过socket进行交互实例
  14. 从Python爬虫到Spark预处理数据的真实需求[三]
  15. vue内使用 cytoscape(数据可视化)
  16. 数加加众包:奔驰“哭诉维权”美女硕士,你“不要脸”的样子真的很美
  17. 找了好久的perl在window上读excel的脚本
  18. python做工控机_工控机折腾小记
  19. docker ubuntu-18.04 实战系列一
  20. VC++ Tab Control控件的基本用法

热门文章

  1. 《牛奶可乐经济学》读书笔记
  2. 单体架构与微服务架构的区别
  3. idea无法下载源代码
  4. 关于柔性显示器工作原理及发展前景的探究
  5. Hi3559AV100 RTSP推H265视频码流使用VLC软件本地直播
  6. 远程ntp服务器响应模式6查询,H3C WP5048无线PoE注入器 命令参考-Release 2208-6W100
  7. 【聚合支付】 如何区分界定聚合支付中的“一清”和“二清”?
  8. 得力针式打印机第一联清晰第二联不清晰解决办法
  9. matlab ols regress,计量经济学简单线性回归OLS的Matlab程序.pdf
  10. jena mysql_在Jena框架下基于MySQL数据库实现本体的存取操作