3.json文件常识及基本操作
JSON,全称是JavaScript Object Notation,中文译为JavaScript对象简谱,它是一种轻量级的数据交换格式。
JSON基于ECMAScript的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。这种格式简洁和清晰的层次结构使得JSON成为理想的数据交换语言,易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
JSON是一种纯字符串形式的数据,它本身不提供任何方法(函数),非常适合在网络中进行传输。
在JavaScript、PHP、Java、Python、C++等编程语言中,都内置了处理JSON数据的方法。通常情况下,JSON用于在Web客户端(浏览器)与Web服务器端之间传递数据。
python对json进行基本的增删改查操作
在Python中,可以使用内置的json模块对JSON文件进行增删改查操作。下面是一些基本的操作示例:
首先,假设我们有一个名为data.json的JSON文件,其内容如下:
{
"students": [
{"id": 1, "name": "Alice", "age": 20},
{"id": 2, "name": "Bob", "age": 21},
{"id": 3, "name": "Charlie", "age": 22}
]
}
接下来,我们将演示如何对该文件进行增删改查操作。
读取JSON文件
可以使用json.load()方法读取JSON文件的内容并将其解析为Python对象。例如:
import json
with open('data.json', 'r') as f:
data = json.load(f)
print(data)
输出:
{‘students’: [{‘id’: 1, ‘name’: ‘Alice’, ‘age’: 20}, {‘id’: 2, ‘name’: ‘Bob’, ‘age’: 21}, {‘id’: 3, ‘name’: ‘Charlie’, ‘age’: 22}]}
查询JSON文件中的数据
可以通过访问Python对象的属性或索引来查询JSON文件中的数据。例如,要查询第一个学生的姓名,可以执行以下代码:
print(data['students'][0]['name'])
输出:
Alice
修改JSON文件中的数据
可以通过修改Python对象的属性或索引来修改JSON文件中的数据。例如,要将第一个学生的年龄修改为25,可以执行以下代码:
data['students'][0]['age'] = 25
向JSON文件中添加数据
可以通过向Python对象中添加新的属性或元素来向JSON文件中添加数据。例如,要添加一个名为David的新学生,可以执行以下代码:
new_student = {'id': 4, 'name': 'David', 'age': 23}
data['students'].append(new_student)
将修改后的数据写入JSON文件
可以使用json.dump()方法将修改后的Python对象写入JSON文件。例如:
with open('data.json', 'w') as f:
json.dump(data, f)
注意,这里使用了’w’模式打开文件,这将覆盖原始文件的内容。如果要在原始文件中追加新的数据,可以使用’a’模式打开文件。
实例
import json
import os
class JsonHelper:
'''
更新,添加
'''
def update(self,key,data,data_path):
# 如果json文件不存在,则创建
if not os.path.exists(data_path):
with open(data_path, 'w',encoding='utf-8') as f:
# 创建空json文件
f.write(json.dumps({}))
# 更新数据
with open(data_path, encoding='utf-8-sig', errors='ignore') as file:
# 读取json文件
content = json.load(file)
if key in content:
# 更新键的内容
content[key].update(data)
else:
# 添加键和其内容
content[key] = data
# 保存数据到本地json文件中
with open(data_path, 'w',encoding='utf-8') as f:
json.dump(content, f, indent=2,ensure_ascii=False)
'''
读取
'''
def read(self,data_path):
with open(data_path, encoding='utf-8-sig', errors='ignore') as file:
content = json.load(file)
return content
'''
删除
'''
def delete(self,key,data_path):
# 读取json文件
with open(data_path, encoding='utf-8-sig', errors='ignore') as file:
content = json.load(file)
# 删除对应的键和内容
del content[key]
# 保存数据到本地json
with open(data_path, 'w',encoding='utf-8') as f:
json.dump(content, f, indent=2,ensure_ascii=False)
return content
jsonHelper = JsonHelper()
if __name__ == '__main__':
jsonHelper = JsonHelper()
# jsonHelper.write({"tetset":1231})
print("写入json")
jsonHelper.data_path = r"../assets/data.json"
print(jsonHelper.read())
test= jsonHelper.read()
print(test["data"])