这里是清安,本章我们来看看json的一些应用。简单易懂还实用。
一起来看看数据类型以及一些语法规则吧
1、数字(整数或浮点数) 如:{"age":18, "score":70.5} 注意,数字直接写,不需要带任何符号2、字符串(在双引号中) 如:{"name":"清安”, "sex":"男"} 注意:字符串是用双引号或者单引号引起 来的内容3、逻辑值(true 或 false) 如:{ "flag":true } 注意:true,false,直接写,不需要加引号4、数组(在中括号中) 如 :{"score" : [100,80,90]} 标识符:[],数组类型是有索引值,索 引值是从0开始的5、对象(在大括号中) 如:{ "stu1":{"name":"清安" , "sex":"男"} , "url":"https://blog.csdn.net/weixin_52040868" }6、null 如 :{"score" : Null}
JSON与字典的区别
json--key只能是字符串,value:(字符串, 数字, 对象, 数组, 布尔值或 null)
dict--key可以是数字(整数,浮点数,布尔值),字符串,元组,就是不能为列表 value可以是数字(整数,浮点数,布尔值),字符串,元组,列表,字典
方法 | 作用 |
json.dumps() | 将python对象编码成Json字符串 |
json.loads() | 将Json字符串解码成python对象 |
json.dump() | 将python中的对象转化成json储存到文件中 |
json.load() | 将文件中的json的格式转化成python对象提取出来 |
看例子
dump
import json name = ['清安', '男', 18] with open('name.json', 'w') as file_name: i = json.dump(name, file_name) print(type(i), id(i)) # <class 'NoneType'> 140726372809944
需要先导入json的包,我们首先创建一个列表,然后我们使用with open()创建一个名为name.json的文件,json.dump()是用来存储数据的,所以这里是创建一个文件并将name列表写入。
load
写入了列表内容后,我们怎么读取到已经存储到name.json中的内容呢,那么我们就需要用到json.load()函数了。
with open('name.json', 'r', encoding='utf-8') as r: rd = json.load(r) print(type(rd), id(rd)) # <class 'list'> 1829847702976
这里我们可以定义一个变量去接收json.load()函数读取的内容再通过print打印出来。
dumps
data_1 = {"stu1": {'name': '清安', "sex": "男"}, "url": "https://blog.csdn.net/weixin_52040868"} print(type(data_1), id(data_1)) dumps_ = json.dumps(data_1, ensure_ascii=False) print(type(dumps_), id(dumps_)) print(dumps_) # <class 'dict'> 1607962417344 # <class 'str'> 2222289040752
正如上面所说,将python对象编码成Json字符串,本身我们定义的变量就是字典类型的,经过dumps函数转变后,就是字符串格式了。
值得注意的是:'name': '清安',这里是单引号,经过dumps函数转变后,变成了双引号。这也就是我们前面说的"字符串(在双引号中)"。单双引号的在字典中都可行,但是在json中只能是双引号。
load
data_2 = '{"stu1": {"name": "清安", "sex": "男"}, "url": "https://blog.csdn.net/weixin_52040868"}' print(type(data_2), id(data_2)) loads_ = json.loads(data_2) print(type(loads_), id(loads_)) print(loads_["stu1"]) # <class 'str'> 1607965048368 # <class 'dict'> 1607965495552 # {'name': '清安', 'sex': '男'}
这里也是的,我们将上述例子稍作改变,改成字符串,我们可以通过loads函数直接变成我们所需要的对象,这里是字典类型的。至于取值,我们就跟字典取值类似的方法。
这里还有一个小实例,仅供参考,小伙伴也可以跟着一起码一码:
try: with open('name_.json', 'r') as file_name: names = json.load(file_name) print(names) except: i = input("请输入名字:") with open('name_.json', 'w') as f: json.dump(i, f) print(f"{i}")
这里使用之前所讲的异常处理,忘记了的小伙伴可以复习复习,如果没有这个json文件,那么就是进入except,控制台输入,然后自动创建一个文件。