一、介绍
Json,全称是JavaScript Object Notation,也就是JavaScript对象标记,它通过对象和数组的组合来表示数据,构造简洁但是结构化程度非常高,是一种轻量级的数据交换格式。
在JavaScript中,一切都是对象。因此,任何支持的类型都可以通过Json来表示,如字符串,数字,对象,数组。
在JavaScript中的对象和数组相当于python中的字典和数组
{key1:value1,key2:value2,} # 对象
["java","javascript","vb",...] # 数组
而一个JSON对象的格式为:
[{
"name": "Bob",
"gender": "male",
"birthday": "1992-10-18"
}, {
"name": "Selina",
"gender": "female",
"birthday": "1995-10-18"
}]
二、基础用法
json.loads()方法可以将JSON文本字符串转为JSON对象
import json
string = '''
[{
"name": "Bob",
"gender": "male",
"birthday": "1992-10-18"
}, {
"name": "Selina",
"gender": "female",
"birthday": "1995-10-18"
}]
'''
print(type(str))
data = json.loads(string)
print(data)
print(type(data))
#输出
[{'name': 'Bob', 'gender': 'male', 'birthday': '1992-10-18'}, {'name': 'Selina', 'gender': 'female', 'birthday': '1995-10-18'}]
注意这里string中的字符串不能使用单引号,否则会报错。
打开json文件
import json
with open('data.json', 'r') as file:
str = file.read()
data = json.loads(str)
print(data)
接下来可以调用data中的信息,
data[0]['naem']
data[0].get('name')
data[0].age('age', 25)
推荐使用第二个方法,因为当这个键名不存在的时候,会返回None,而不是报错。而且还可以传入第二个参数,作为默认值。
json.dumps()将JSON对象转换为字符串
import json
data = [{
'name': 'Bob',
'gender': 'male',
'birthday': '1992-10-18'
}]
with open('data.json', 'w') as file:
file.write(json.dumps(data, indent = 2, ensure_ascii=False))
indent参数代表着缩进字符个数,因此可以自定义JSON的格式。如果对象中有中文,还可以设置参数ensure_ascii,保证存入文件的中文仍是中文,而不是Unicode字符。
json.load()把文件打开,并把字符串变换为数据类型
with open("../config/record.json",'r') as load_f:
load_dict = json.load(load_f)
print(load_dict)
with open("../config/record.json","w") as f:
json.dump(json_str,f)
print("加载入文件完成...")