Python中的JSON保存和读取

什么是JSON?

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它以易于阅读和编写的方式来表示结构化数据。JSON格式通常用于前后端的数据交互。

JSON由键值对组成,键是字符串,值可以是字符串、数字、布尔值、数组、对象或null。JSON的语法和JavaScript的语法相同,所以可以直接在JavaScript中解析JSON数据。

JSON和Python

在Python中,可以使用标准库中的json模块来处理JSON数据。json模块提供了用于编码和解码JSON数据的函数,可以将Python对象转换为JSON格式的字符串,也可以将JSON格式的字符串转换为Python对象。

保存JSON到文件

要将Python对象保存为JSON格式的字符串,并写入文件,可以使用json.dump()函数。以下是保存JSON的示例代码:

import json

data = {
    "name": "John",
    "age": 30,
    "city": "New York"
}

# 将Python对象转换为JSON字符串
json_data = json.dumps(data)

# 将JSON字符串写入文件
with open("data.json", "w") as json_file:
    json.dump(json_data, json_file)

在上面的代码中,我们首先定义了一个Python字典data,它包含了一些信息。然后,使用json.dumps()函数将data转换为JSON格式的字符串json_data

然后,我们使用open()函数以写入模式打开一个文件data.json。通过with语句,可以确保文件在使用后被正确关闭。

最后,使用json.dump()函数将json_data写入文件。

从文件加载JSON

要从文件中加载JSON数据,并将其转换为Python对象,可以使用json.load()函数。以下是加载JSON的示例代码:

import json

# 从文件中加载JSON数据
with open("data.json", "r") as json_file:
    json_data = json.load(json_file)

# 将JSON字符串转换为Python对象
data = json.loads(json_data)

在上面的代码中,我们首先使用open()函数以读取模式打开文件data.json。然后,使用json.load()函数将文件中的JSON数据加载到json_data变量中。

最后,使用json.loads()函数将json_data转换为Python对象data

JSON和Python对象的互相转换

除了保存JSON到文件和从文件加载JSON之外,json模块还提供了其他函数,用于将Python对象转换为JSON格式的字符串,以及将JSON格式的字符串转换为Python对象。

  • json.dumps():将Python对象转换为JSON格式的字符串。
  • json.loads():将JSON格式的字符串转换为Python对象。
  • json.dump():将Python对象转换为JSON格式的字符串,并写入文件。
  • json.load():从文件中加载JSON数据,并将其转换为Python对象。

小结

本文介绍了如何使用Python中的json模块来保存和读取JSON数据。通过json模块,可以将Python对象转换为JSON格式的字符串,并将其保存到文件中,也可以从文件中加载JSON数据,并将其转换为Python对象。使用json模块的函数,可以方便地在Python中处理JSON数据。

函数名 描述
json.dumps() 将Python对象转换为JSON格式的字符串。
json.loads() 将JSON格式的字符串转换为Python对象。
json.dump() 将Python对象转换为JSON格式的字符串,并写入文件。
json.load() 从文件中加载JSON数据,并将其转换为Python对象。

类图

classDiagram
    class JSON
    JSON : +json.dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
    JSON : +json.loads(s, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
    JSON : +json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)