Python学习-----模块4.0(json字符串与json模块)
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
目录
1.json简介
SON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。
JSON采用完全独立于语言的文本格式但是也使用了类似于C语言家族的习惯包括C, C++, C#, Java, JavaScript, Perl, Python等。 这些特性使JSON成为理想的数据交换语言。
JSON建构于两种结构一是“名称/值”对的集合A collection of name/value pairs。不同的语言中它被理解为对象object纪录record结构struct字典dictionary哈希表hash table有键列表keyed list或者关联数组 associative array。
二是值的有序列表An ordered list of values。在大部分语言中它被理解为数组array。
2.json对象
语法格式
json对象必须在花括号里面对象可以包括多个键值对但是跟字典是不一样的json中的字符串必须用双引号而Python对象的字典可以单引号也可以双引号。
示例
#json字符串
#json字符串只要是字符串类型的都必须用双引号
{"韩信":"刺客","李白":666,"李信":"A级刮痧师","宫本武藏":123}
#json数组
#外面必须要有花括号括起来
{
"writer":[
{"name":"泰戈尔","country":"India"},
{"name":"鲁迅","country":"China"},
{"name":"奥斯特洛夫斯基","country":"Russia"}
]
}
json对象与Python对象对比
JSON | Python |
object | dict |
array | list |
string | str |
number (integer) | int |
number (real) | float |
true | True |
false | False |
null | None |
这里我们可以看出json字符串与Python的字典非常相似但是也有不同上面讲了所以一般情况下json字符串和Python对象之间的转换是json字符串和字典直接的转换
3.json模块
json模块只有4种方法分别是dump、dumps、load、loads下面我会一一介绍。
json模块的作用
1.把Python对象转换为json字符串
2.把json字符串转换为Python对象
导入模块
import json
1json.dumps() 函数
格式
json.dumps(data,indent,sort_key)
参数说明data是表示Python中的数据对象indent是表示格式化空格的数量sort_key是表示是否进行由小到大排序布尔变量如果填入True就表示是如果天False或者不填就表示否
作用把Python对象转换为json字符串
示例
import json
di={'name':'Jack','age':19,'gander':'male'}
print(di,type(di))
a=json.dumps(di) #获取json字符串对象
print(a,type(a))
#输出结果{'name': 'Jack', 'age': 19, 'gander': 'male'} <class 'dict'>
# {"name": "Jack", "age": 19, "gander": "male"} <class 'str'>
import json
di={5:'Jack',2:'Petter',3:'John',1:'Tom',4:'Amy'}
print(di,type(di))
a=json.dumps(di,sort_keys=True) #获取json字符串对象
print(a,type(a))
#输出结果{5: 'Jack', 2: 'Petter', 3: 'John', 1: 'Tom', 4: 'Amy'} <class 'dict'>
# {"1": "Tom", "2": "Petter", "3": "John", "4": "Amy", "5": "Jack"} <class 'str'>
2json.dumps() 函数
格式
json.dumps(data,fp,indent)
参数说明data是表示Python对象或者json对象fp是表示文件indent是表示输出格式化空格的数量
作用这个函数是吧一个data数据转换为json字符串然后再写入fp文件中如果data是Python对象那么就会转换为json字符串如果本身就是json字符串那结果还是json字符串
示例1
import json
di={5:'Jack',2:'Petter',3:'John',1:'Tom',4:'Amy'}
with open('kk.json','w',encoding='utf8') as f:
json.dump(di,f)
#其实这种写法等效于f.write(json.dumps(data))
#结果会生成一个json文件其中就有写入的数据
这里可以看出写入的数据并不是很好看没有那种格式化效果
示例2设置indent格式化写入
import json
di={5:'Jack',2:'Petter',3:'John',1:'Tom',4:'Amy'}
with open('kk.json','w',encoding='utf8') as f:
json.dump(di,f,indent=4)
这看上去就舒服多了所以呢我们写入文件的时候可以适当设置格式化增强文件的可读性。
3json.loads() 函数
格式
json.loads(jsondata)
参数说明jsondata是表示json对象
作用把json字符串转换为Python对象一般是字典
示例1
import json
jsonstr='{"name":"Jack","age":18,"gander":"male","alive":true}'
pythondict=json.loads(jsonstr)
print(pythondict,type(pythondict))
#输出结果{'name': 'Jack', 'age': 18, 'gander': 'male', 'alive': True} <class 'dict'>
示例2
import json
jsonstr='["a","b","c",{"name":"jack","alive":true}]'
pythondict=json.loads(jsonstr)
print(pythondict,type(pythondict))
#输出结果['a', 'b', 'c', {'name': 'jack', 'alive': True}] <class 'list'>
(4) json.load() 函数
格式
json.load(fp)
参数说明fp是表示json文件
作用从文件读取数据然后转换为Python对象其实就跟json.dump反过来就是了然后返回这个对象
示例
json文件的内容
import json
with open('kk.json','r',encoding='utf8') as f:
pythondata=json.load(f)
#等效于 pythondata=f.read()
print(pythondata,type(pythondata))
#输出结果{'5': 'Jack', '2': 'Petter', '3': 'John', '1': 'Tom', '4': 'Amy'} <class 'dict'>
4.总结
方法 | 功能 |
ison.dump(obj, fp) | 将python数据类型转换并保存到json格式的文件内. |
json.dumps(obj) | 将python数据类型转换为json格式的字符串。 |
json.load(fp) | 从ison格式的文件中读取数据并转换为python的类型 |
json.loads(s) | 将json格式的字符串转换为python的类型 |
OK这一期就到这里下一期我们接着学习~~
送一张壁纸