Python中的Json模块详解
Python中的Json模块详解
Json(JavaScript Object Notation)它是⼀种轻量级的数据交换格式,具有数据格式简单,读写⽅便易懂等很多优点。许多主流的编程语⾔都在⽤它来进⾏前后端的数据传输,⼤⼤的简化了服务器和客户端的开发⼯作量。相对于XML来说,更加的轻量级,更⽅便解析,因此许多开发者都遵循Json格式来进⾏数据的传输和交换。今天我们详细介绍⼀下Python在Json的编解码⽅⾯的知识。
json的数据格式
在json中,遵循“键值对”的这样⼀种⽅式,⽐如:“{"name":"tom"}”,就是⼀个json格式的数据,json的格式归纳下来,⼀般有以下⼏点:
1. 对象通过键值对表现;
python解析json文件2. 键通过双引号包裹,后⾯跟冒号“:”,然后跟该键的值;
3. 值可以是字符串、数字、数组等数据类型;
4. 对象与对象之间⽤逗号隔开;
5. “{}”⽤来表达对象;
6. “[]”⽤来表达数组;
看⼀个例⼦:
{
"name":"中国",
"province":[{
免费看源代码国语
"name":"⼴东",
"cities":{
高质量的java在线培训平台
"city":["揭阳","惠来"]
}
}]
}
上例则是⼀个典型的json格式的数据,强⼤的Python提供了⼀个“json”模块,可以⽅便的将各种零散的数据通过模块的内置函数编码形成⼀个json格式的数据,也可以将⼀个json格式的数据解码形成⾃⼰需要的数据,⾮常好⽤,下⾯我们就来介绍⼀下
json.dumps()
json模块⾥的dumps函数是对数据进⾏编码,形成json格式的数据,我们看⼀下下⾯的例⼦:
import json
data_dict = {"key1": "value1", "key2": "value2", "key3": "value3"}
# 有序转换json字符串
json1 = json.dumps(data_dict, sort_keys=True)bootstrap法检验
# 默认⽆序
json2 = json.dumps(data_dict)
print(json1)
print(json2)
通过输出的结果很容易看出,通过dumps⽅法使字典转换成为了json格式,虽然它们⾮常相似。其中,在dumps⾥的参
数“sort_keys=True”,使得输出json后对key和value进⾏0~9、a~z的顺序排序,如果不填,则按照⽆序排列。有时候,通过排序可以⽅便地⽐较json中的数据,因此,适当的排序是很有必要的。
此外,“Indent”参数表⽰缩进的意思,它可以使得输出的Json看起来更加整齐好看,可读性更强,例如:mysql数据库如何使用
import json
data_dict = {"key1": "value1", "key2": "value2", "key3": "value3"}
# 默认⽆序
json1 = json.dumps(data_dict, indent=4)
print(json1)
'''输出结果
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
'''
列举⼀下dumps()的可填参数:
1. skipkey:默认为False,当dict对象⾥的数据不是Python的基本数据类型;(str,unicode,int,long,float,bool,None)时,当skipkey为
False,就会报错,如果skipkey为True,则可以跳过这类key;
2. indent:如果填0或者不填,则按照⼀⾏进⾏打印,否则按照indent的数值显⽰前⾯的空格(正整数形式);
dedecms58免费模板
3. separators:分隔符,默认为“(',',':')”,它表⽰key之间⽤“,”隔开,key和value之间⽤“:”隔开;
4. encoding:编码格式,默认值是UTF-8;
5. sort_keys:对key、value进⾏排序,默认值是False,即不排序;
6. ensure_ascii:默认为True,如果dict对象⾥含有none-ASCII的字符,则显⽰\uXX的格式,如果为False,则能正常显⽰出来;json.loads()
和dumps相反,loads函数则是将json格式的数据解码,转换为Python字典,我们看⼀下下⾯的例⼦:
import json
data_str = '{"key1": "value1", "key2": "value2", "key3": "value3"}'
# 默认⽆序
data_dict = json.loads(data_str)
print(data_dict)
"""
{'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
"""
有时候,输出结果遇到中⽂的时候,会出现编码格式不⼀样的情况,显⽰出为Unicode的编码格式,使得不易读懂,解决办法是添加参
数“encoding”参数,即上⾯的改写成这样:d1 = json.loads(data1,encoding='utf-8')即可。
json.dump()和 json.load()
相对于上⾯所讲的dumps和loads来说,dump和load函数的功能类似,只不过前者是⽤来处理字符串类型的,⽽后者是⽤于处理⽂件类型的,如下所⽰:
import json
data = {'str3':'xyz','str2' :'efgh','str1':'abcd'}
with open(' data. txt', '', encoding='utf-8') as f:
json.dump(data, f, indent=4)  # f. write (json.dumps (data, indent=4))  #和上⾯的效果⼀样
with open(' data. txt', 'r') as f:
d2 = json.load(f)  #d2 = json.loads (f. read())#和上⾯的效果⼀样

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。