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

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

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

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

import json

字符串解析:

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

栗子:

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

文件解析:

文件内容:

{
"汽车": {
"BMW X3": {
"price": 499999,
"stock": 399,
"belong": "汽车"
},
"PASST": {
"price": 299999,
"stock": 297,
"belong": "汽车"
},
"Tesla Model S": {
"price": 799999,
"stock": 3000,
"belong": "汽车"
},
"Porsche 911": {
"price": 2999999,
"stock": 594,
"belong": "汽车"
}
},
"手机": {
"锤子2(这特么真是手机)": {
"price": 998,
"stock": 2994,
"belong": "手机"
},
"华为Mate": {
"price": 2999,
"stock": 5996,
"belong": "手机"
},
"Iphone": {
"price": 5888,
"stock": 2998,
"belong": "手机"
},
"XiaoMi 4": {
"price": 1999,
"stock": 5396,
"belong": "手机"
}
},
"服装": {
"小白鞋": {
"price": 900,
"stock": 5964,
"belong": "服装"
},
"T恤": {
"price": 300,
"stock": 892,
"belong": "服装"
},
"驴牌腰带": {
"price": 9999,
"stock": 2999,
"belong": "服装"
},
"Nudie牛仔裤": {
"price": 699,
"stock": 3978,
"belong": "服装"
}
},
"电脑": {
"Mac Air": {
"price": 6999,
"stock": 6002,
"belong": "电脑"
},
"Mac pro": {
"price": 9999,
"stock": 3995,
"belong": "电脑"
},
"IBM X240": {
"price": 6999,
"stock": 3003,
"belong": "电脑"
},
"Surface Book": {
"price": 8999,
"stock": 3020,
"belong": "电脑"
}
},
"家电": {
"洗衣机": {
"price": 999,
"stock": 597,
"belong": "家电"
},
"彩电": {
"price": 5000,
"stock": 398,
"belong": "家电"
},
"微波炉": {
"price": 800,
"stock": 2995,
"belong": "家电"
},
"冰箱": {
"price": 3000,
"stock": 300,
"belong": "家电"
},
"热水器": {
"price": 600,
"stock": 900,
"belong": "家电"
}
}
}

解析:

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

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

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

import json
data1 = {'b':789,'c':456,'a':123}
data2 = {'a':123,'b':789,'c':456}
d1 = json.dumps(data1,sort_keys=True)
d2 = json.dumps(data2)
d3 = json.dumps(data2,sort_keys=True)
print(d1)
print(d2)
print(d3)
print(d1==d2)

结果:

{"a": 123, "b": 789, "c": 456}
{"c": 456, "b": 789, "a": 123}
{"a": 123, "b": 789, "c": 456}
False
[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. UTF-8&Unicode,0xC0和0x80是什么?

    转载:http://blog.sina.com.cn/s/blog_7c4f3b160101dv4p.html 一个字符串长度统计的代码,如下 int calcLen(const char* _str ...

  2. 安装Android Studio开发环境

    下载安装包 中文社区官网 http://android-studio.org/ 目前最新的是2.3.3版本 安装Android Studio 双击安装 等待安装包自动解压 下一步 选择安装Androi ...

  3. HTML 005 段落

    HTML 段落 HTML 可以将文档分割为若干段落. HTML 段落 段落是通过 <p> 标签定义的. 实例 <p>这是一个段落 </p> <p>这是另 ...

  4. MySQL 优化--持续整理

    一.innodb体系结构优化: 1.IO优化 IO能力不足时 innodb_io_capacity 应该降低 innodb_max_dirty_pages_pct 应该降低 innodb_max_di ...

  5. MySQL Multi-Range Read(MRR 索引多范围查找) 原理与解析

    原理: 如果基表很大,数据没有被缓存,在二级索引上使用范围扫描读取行可能会导致大量的随机磁盘访问.使用Multi-Range Read新特性,mysql可以减少对磁盘的随机读的次数:首先,mysql只 ...

  6. HashMap的底层结构和原理

    http://youzhixueyuan.com/the-underlying-structure-and-principle-of-hashmap.html HashMap是Java程序员使用频率最 ...

  7. C/C++ -- 判断字符串中存在中文

    电脑系统中的英文字符串和中文字符最根本的区别就在于: 1.英文的 ASCII 码,其最高位为 0,占一个字节 注:英文的ASCII码范围是在0到127,二进制为(0000 0000 ~ 0111 11 ...

  8. start django project

    1.django-admin startproject helloword 创建项目helloword 2.开始一个app,写一个hello worldpython manage.py startap ...

  9. ubuntu ukylin wineqq 登录时提示:您的号码暂时不能使用低版本的qq

    ubuntu ukylin wineqq 登录时提示:您的号码暂时不能使用低版本的qq,而有的qq号登录没有问题. 优麒麟官网上下载的qqwine安装包,解压后安装三个deb包. 郁闷了一下午,都想装 ...

  10. awk如何传递外部变量?

    第一种: [root@master yjt]# var=1 [root@master yjt]# echo |awk -v value=$var '{print value}' 1 第二种: [roo ...