JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。

以上是网上对json的解释,其实只要记住是一种轻量的数据交换格式就可以了,确实方便,可以把数据写入文件中,也可将数据当做字符串使用,但需要注意的是:

  1. 1.字符串输入json时,对元素需要使用双引号,单引号容易出错
  2. 2.数据写入文件时,需要注意圆括号,也叫小括号,使用json.dump()默认会将有序排列转化为列表存入json文件,所以如果你的数据中有元组的话需要注意这一点
    3. json 字符串内部的字典、列表中的元素,如果是字符串的话,必须用双引号

当然,最重要的还是需要先导入json模块:

  1. import json

字符串解析:

  1. json.dumps() #编码:把一个Python对象编码转换成Json字符串
  2. json.loads() #解码:把Json格式字符串解码转换成Python对象

栗子:

  1. add_contect_str=‘{"backend": "www.oldboy.org","record":{"server": "100.1.7.9","weight": 20,"maxconn": 3000}}’
  2. add_contect=json.loads(add_contect_str)
  3. search_info=add_contect['backend']
  4. weight=add_contect['record']['weight']
  5. server=add_contect['record']['server']
  6. maxconn=add_contect['record']['maxconn']

文件解析:

文件内容:

  1. {
  2. "汽车": {
  3. "BMW X3": {
  4. "price": 499999,
  5. "stock": 399,
  6. "belong": "汽车"
  7. },
  8. "PASST": {
  9. "price": 299999,
  10. "stock": 297,
  11. "belong": "汽车"
  12. },
  13. "Tesla Model S": {
  14. "price": 799999,
  15. "stock": 3000,
  16. "belong": "汽车"
  17. },
  18. "Porsche 911": {
  19. "price": 2999999,
  20. "stock": 594,
  21. "belong": "汽车"
  22. }
  23. },
  24. "手机": {
  25. "锤子2(这特么真是手机)": {
  26. "price": 998,
  27. "stock": 2994,
  28. "belong": "手机"
  29. },
  30. "华为Mate": {
  31. "price": 2999,
  32. "stock": 5996,
  33. "belong": "手机"
  34. },
  35. "Iphone": {
  36. "price": 5888,
  37. "stock": 2998,
  38. "belong": "手机"
  39. },
  40. "XiaoMi 4": {
  41. "price": 1999,
  42. "stock": 5396,
  43. "belong": "手机"
  44. }
  45. },
  46. "服装": {
  47. "小白鞋": {
  48. "price": 900,
  49. "stock": 5964,
  50. "belong": "服装"
  51. },
  52. "T恤": {
  53. "price": 300,
  54. "stock": 892,
  55. "belong": "服装"
  56. },
  57. "驴牌腰带": {
  58. "price": 9999,
  59. "stock": 2999,
  60. "belong": "服装"
  61. },
  62. "Nudie牛仔裤": {
  63. "price": 699,
  64. "stock": 3978,
  65. "belong": "服装"
  66. }
  67. },
  68. "电脑": {
  69. "Mac Air": {
  70. "price": 6999,
  71. "stock": 6002,
  72. "belong": "电脑"
  73. },
  74. "Mac pro": {
  75. "price": 9999,
  76. "stock": 3995,
  77. "belong": "电脑"
  78. },
  79. "IBM X240": {
  80. "price": 6999,
  81. "stock": 3003,
  82. "belong": "电脑"
  83. },
  84. "Surface Book": {
  85. "price": 8999,
  86. "stock": 3020,
  87. "belong": "电脑"
  88. }
  89. },
  90. "家电": {
  91. "洗衣机": {
  92. "price": 999,
  93. "stock": 597,
  94. "belong": "家电"
  95. },
  96. "彩电": {
  97. "price": 5000,
  98. "stock": 398,
  99. "belong": "家电"
  100. },
  101. "微波炉": {
  102. "price": 800,
  103. "stock": 2995,
  104. "belong": "家电"
  105. },
  106. "冰箱": {
  107. "price": 3000,
  108. "stock": 300,
  109. "belong": "家电"
  110. },
  111. "热水器": {
  112. "price": 600,
  113. "stock": 900,
  114. "belong": "家电"
  115. }
  116. }
  117. }

解析:

  1. user_info=json.load(open('user_info','r')) #读数据
  2. json.dump(goods,open('goods_info','w'),ensure_ascii=False,indent=1) #写入数据

其中,ensure_ascii=False表示不转编码,如果数据中有中文,没有ensure_ascii参数时,会转为乱码。indent为缩进,让数据看起来更有序,优雅的装逼法则。

排序:sort_keys=True,排序使数据看起来更有序,虽然字典的是无序的,然并卵。。。

  1. import json
  2. data1 = {'b':789,'c':456,'a':123}
  3. data2 = {'a':123,'b':789,'c':456}
  4. d1 = json.dumps(data1,sort_keys=True)
  5. d2 = json.dumps(data2)
  6. d3 = json.dumps(data2,sort_keys=True)
  7. print(d1)
  8. print(d2)
  9. print(d3)
  10. print(d1==d2)

结果:

  1. {"a": 123, "b": 789, "c": 456}
  2. {"c": 456, "b": 789, "a": 123}
  3. {"a": 123, "b": 789, "c": 456}
  4. False
  5. [Finished in 0.1s]

python之json处理的更多相关文章

  1. Json概述以及python对json的相关操作

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...

  2. 使用Python解析JSON数据的基本方法

    这篇文章主要介绍了使用Python解析JSON数据的基本方法,是Python入门学习中的基础知识,需要的朋友可以参考下:     ----------------------------------- ...

  3. python 序列化 json pickle

    python的pickle模块实现了基本的数据序列和反序列化.通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储:通过pickle模块的反序列化操作,我们能够从文件 ...

  4. Python处理json格式的数据文件(一些坑、一些疑惑)

    这里主要说最近遇到的一个问题,不过目前只是换了一种思路先解决了,脑子里仍然有疑惑,只能怪自己太菜. 最近要把以前爬的数据用一下了,先简单的过滤一下,以前用scrapy存数据的时候为了省事也为了用一下它 ...

  5. Python处理JSON

    从开源中国的博客搬来,合并博客 一.JSON是什么? JSON是一种轻量级的数据交换格式 二.Python处理JSON的思维 其实很容易理解,无非是将数据编成JSON格式数据和吧JSON格式的数据解析 ...

  6. Python处理JSON数据

    python解析json时为了方便,我们首先安装json模块,这里选择demjson,官方网址是:http://deron.meranda.us/python/demjson/ 访问之后点击页面的的D ...

  7. Json概述以及python对json的相关操作(转)

    什么是json: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programm ...

  8. python 格式化 json输出

    利用python格式化json 字符串输出. $ echo '{"json":"obj"}' | python -m json.tool 利用python -m ...

  9. python解析json

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 引用 import json 编码:把一个Python对象编码转换成Json字符串 json.dumps ...

  10. python 解析json loads dumps

    认识 引用模块 重要函数 案例 排序 缩进参数 压缩 参考 认识 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript(Standa ...

随机推荐

  1. webpack 配置react脚手架(二):热更新

    下面继续配置 webpack dev server    hot module replacement: 首先配置dev-server     安装     npm i webpack-dev-ser ...

  2. Maximum Subarray II

    Given an array of integers, find two non-overlapping subarrays which have the largest sum. The numbe ...

  3. Swagger2 模拟请求头

    前几天开发项目的时候,使用了Restful风格的接口.进行开发的时候,模拟请求头,带Token的时候遇到了一些问题.因为Api接口使用Swagger2进行搭建,所以找到了Swagger2 模拟head ...

  4. 斜率dp的模板总结

    #include<cstdio> #include<algorithm> using namespace std; long long sumt[40005],sum[4000 ...

  5. NetworkX系列教程(10)-算法之三:关键路径问题

    小书匠Graph图论 重头戏部分来了,写到这里我感觉得仔细认真点了,可能在NetworkX中,实现某些算法就一句话的事,但是这个算法是做什么的,用在什么地方,原理是怎么样的,不清除,所以,我决定先把图 ...

  6. Map集合类

    1.1 Map.clear方法——从Map集合中移除所有映射关系 public static void main(String[] args) {    Map map=new HashMap();  ...

  7. java 封装返回结果实体类 返回结果以及错误信息

    public class ResponseMessage { private final static String STATUS_OK = "0"; private final ...

  8. maven引入第三方jar包

    maven有两种文件解析和分配策略,也就是我们常说的artifacts(依赖). 第一种是本地仓库,这是你缓存在本地的依赖.默认在${user.home}/.m2/repository目录下;当mav ...

  9. 小程序tab切换代码

    <!--index.wxml--> <view class="container"> <view class="navtap" & ...

  10. Spring和Quartz整合实现定时任务调度

    在Spring中可以很方便的使用Quartz来实现定时任务等功能,Quartz主要就是Schedule(任务调度器),Job(作业任务)和Trigger(触发器)三者的关系. 实现方式有多种,在此就介 ...