Python中的json处理——load与loads

发布时间:2023-05-20

一、json简介

JSON,全称JavaScript Object Notation,是一种轻量级的数据串行化格式。JSON的设计初衷是为了更方便地进行数据传输和交换,常用于Web前端与后端数据的通信和存储。JSON的格式与JavaScript对象字面值的语法有很大相似性,因此得名JavaScript Object Notation。

二、json在Python中的操作

1. dump与load方法

Python中的json模块提供了两组方法完成json数据的解析与生成操作。其中,dump与load方法用于将json数据写入文件或从文件中读取,实现文件与json数据之间的转换。

import json
# 将数据写入json文件
data = {"name": "John", "age": 30, "city": "New York"}
with open("data.json", "w") as f:
    json.dump(data, f)
# 从json文件中读取数据
with open("data.json", "r") as f:
    data = json.load(f)

dump将Python数据转化为json数据后写入文件,而load将从文件读取json数据并将其转化为Python数据。其中,dump和load方法的第二个参数通常为文件句柄(File Object),同时具有写入、读取和关闭文件的功能。

2. dumps与loads方法

dumps和loads方法用于直接在Python内存中进行json数据的解析与生成操作。dumps方法将Python数据转换为json数据,loads方法将json数据转换为Python数据。

import json
# 将Python数据转换为json数据
data = {"name": "John", "age": 30, "city": "New York"}
json_data = json.dumps(data)
# 将json数据转换为Python数据
python_data = json.loads(json_data)

在实际的开发中,经常需要将从前端传来的json数据转化为Python对象进行操作,或是将Python对象转化为json数据返回前端。这时,loads和dumps方法就非常方便了。

三、load与loads方法的区别

load和loads的主要区别在于,load可以从文件中读取json数据,而loads只能从字符串中读取。因此,load需要提供一个文件句柄作为参数,而loads需要提供一个字符串作为参数。

四、json数据的格式化输出

json模块提供了indent参数用于控制输出的缩进格式。indent可以是整数或字符串,代表缩进的字符数或字符串。可以将其设置为2、4、8或"\t"等。

import json
# 设置indent参数为4
data = {"name": "John", "age": 30, "city": "New York"}
json_data = json.dumps(data, indent=4)
print(json_data)

输出结果:

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

使用indent参数可以使输出的json数据更易于阅读和理解。

五、json数据的排序

在Python中,json数据默认是按照键的字母顺序进行排序的。我们也可以通过sort_keys参数自定义排序方式。

import json
# 设置sort_keys参数为False
data = {"name": "John", "age": 30, "city": "New York"}
json_data = json.dumps(data, sort_keys=False)
print(json_data)

输出结果:

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

sort_keys参数的默认值为True,当将其设置为False时,json数据将按照第一次出现的顺序进行排序。

六、json数据的解析和生成

json数据的解析和生成是json模块最重要的功能之一。我们可以通过json.loads方法将json数据解析为Python数据,也可以通过json.dumps方法将Python数据转换为json数据。下面是一些常用的例子:

import json
# json数据解析为Python数据
json_data = '{"name": "John", "age": 30, "city": "New York"}'
python_data = json.loads(json_data)
print(python_data)
# Python数据转换为json数据
data = {"name": "John", "age": 30, "city": "New York"}
json_data = json.dumps(data)
print(json_data)
# json数据解析为Python数据(包含嵌套结构)
json_data = '{"name": "John", "age": 30, "city": {"name": "New York", "population": 8398748}}'
python_data = json.loads(json_data)
print(python_data)
print(python_data["city"]["name"])
# Python数据转换为json数据(包含嵌套结构)
data = {"name": "John", "age": 30, "city": {"name": "New York", "population": 8398748}}
json_data = json.dumps(data)
print(json_data)

在实际的开发中,我们经常需要对json数据进行解析和生成操作。json模块提供了非常方便的解析和生成方法,大大简化了操作流程。

七、总结

本文主要介绍了Python中的json模块及其相关方法,包括dump、load、dumps、loads等方法的使用方法及区别,以及json数据的格式化输出和排序等常用功能。json模块的出现大大简化了json数据的解析和生成操作,为Python开发者提供了更加高效、便捷的数据处理方案。