python之json库

json主要用来交换文本数据,比如开发网站,后端和前端之间传递数据很多时候都是通过json格式来交换的.

python对json主要就是 写和读,即将内容转换成json和将json读取成python格式

先看写 .python对json的写 一般用dumps和dump 前者是写到变量中,后者是写到文件中.

import json

dict1 ={"a":"test","b":"name","c":25,"d":True,"e":["haha","hehe"],"aa":None}
print(dict1)
json1 = json.dumps(dict1)
print(json1)
print(type(json1))

#{'a': 'test', 'b': 'name', 'c': 25, 'd': True, 'e': ['haha', 'hehe'], 'aa': None}
{"a": "test", "b": "name", "c": 25, "d": true, "e": ["haha", "hehe"], "aa": null}
<class 'str'>
#切记json格式是一个字符串,不管他长的多像字典还是列表,但是他是一个字符串.
#可以看到  dict1这是一个字典 ,但是我们读到json1里以后,josn1是一个字符串.我们直接打印出来和转换成json格式后再打印出来比较一下有什么变化
#1.json都是双引号,而字典是单引号
#2.json的布尔值是小写开头  比如true 而python是大写开头 
#3.json的空值是null,而python是None

#除了这几点,json和python的字典很像.实际上如果我们将一个列表转换成json,会发现得到的json数据和python的列表也很像.

  下面我们看dump和dumps的一些参数 首先是indent

import json

dict1 ={"a":"test","b":"name","c":25,"d":True,"e":["haha","hehe"],"aa":None}
json2 = json.dumps(dict1,indent=4)
print(json2)


'''
加上indent =4 ,则会将json按这样的格式来排序
{
    "a": "test",
    "b": "name",
    "c": 25,
    "d": true,
    "e": [
        "haha",
        "hehe"
    ],
    "aa": null
}
'''

  还有一个参数sort_keys

import json

dict1 ={"a":"test","b":"name","c":25,"d":True,"e":["haha","hehe"],"aa":None}
json3 = json.dumps(dict1,indent=4,sort_keys=True)
print(json3)
json.dump(dict1,open("test.json","w"))
'''
加上sort_keys=True  就会将json按key的顺序来排序.
{
    "a": "test",
    "aa": null,
    "b": "name",
    "c": 25,
    "d": true,
    "e": [
        "haha",
        "hehe"
    ]
}
'''

  而写入到文件dump,参数和dumps一样.

import json
json.dump(dict1,open("test.json","w"))

#这就在根目录下创建了一个test.json的文件,并且是覆盖写入模式.参数我们就不测试了,总之和dumps一样

  下面我们看看怎么读json格式,同样分从文件读 load 和从变量中读  loads

import json
#我们先定义一个字符串来模拟json,因为我们知道json都是字符串格式的,注意这个S是一个字符串额,被引号包裹的.
s = '{"name": "John", "age": 30, "city": "New York"}'
obj = json.loads(s)
print(obj)
print(type(obj))

'''
{'name': 'John', 'age': 30, 'city': 'New York'}
<class 'dict'>
可以看到格式是字典,证明已经被读取成了字典
'''

  从文件读load

import json
#我们读刚才dump的那个json文件,模式为只读
obj = json.load(open('test.json',"r"))
print(obj)
print(type(obj))
#{'a': 'test', 'b': 'name', 'c': 25, 'd': True, 'e': ['haha', 'hehe'], 'aa': None}
<class 'dict'>
#可以看到 和我们设想的一样,读出来,并且是字典格式的.

  json大概就先研究这么多,如果还有更深的再补充,暂时够用了应该

posted @ 2025-03-15 13:32  叶无齐  阅读(38)  评论(0)    收藏  举报

python学习之路

[python随笔]