python之json操作

1. 什么是JSON

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写。它基于JavaScript语言的一个子集,采用完全独立于编程语言的文本格式,用于表示结构化数据。JSON是一种文本格式,可以通过程序解析和操作。

在Python中,可以使用内置的json模块来进行JSON数据的编解码操作。

2. JSON编码

2.1 json.dumps()

Python对象可以通过json.dumps()方法转换为JSON字符串:

import json

# 定义一个Python对象

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

# 将Python对象编码为JSON字符串

json_str = json.dumps(data)

# 打印JSON字符串

print(json_str)

执行结果:

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

可以看到,Python对象转换成了JSON字符串,其中的key必须是字符串类型。

2.2 json.dump()

如果需要将JSON数据写入文件中,则可以使用json.dump()方法:

import json

# 定义一个Python对象

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

# 将Python对象转换为JSON数据并写入文件中

with open('data.json', 'w') as f:

json.dump(data, f)

执行以上代码后,会在当前目录下生成一个名为data.json的JSON文件。

3. JSON解码

3.1 json.loads()

可以使用json.loads()方法将JSON字符串解码为Python对象:

import json

# 定义一个JSON字符串

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

# 将JSON字符串解码为Python对象

data = json.loads(json_str)

# 打印Python对象

print(data)

执行结果:

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

可以看到,JSON字符串成功解码为Python对象。

3.2 json.load()

如果需要将JSON文件读取为Python对象,则可以使用json.load()方法:

import json

# 从JSON文件中读取数据并解码为Python对象

with open('data.json', 'r') as f:

data = json.load(f)

# 打印Python对象

print(data)

执行以上代码后,会将data.json文件中的JSON数据读取为Python对象。

4. 更多JSON选项

4.1 美化输出

通过添加indent参数可以美化输出结果:

import json

# 定义一个Python对象

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

# 将Python对象转换为带有缩进的JSON数据, indent=4表示缩进4个空格

json_str = json.dumps(data, indent=4)

# 打印带有缩进的JSON数据

print(json_str)

执行结果:

{

"name": "John",

"age": 30,

"city": "New York"

}

4.2 去除空格

通过添加separators参数可以去除空格:

import json

# 定义一个Python对象

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

# 将Python对象转换为不带空格的JSON数据

json_str = json.dumps(data, separators=(',', ':'))

# 打印不带空格的JSON数据

print(json_str)

执行结果:

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

4.3 JSON编码高级参数

以下是JSON编码的高级参数:

skipkeys:如果Python对象中的key不是字符串类型,会引发TypeError异常,但设置skipkeys=True可以忽略这样的错误,而跳过这些项。

ensure_ascii:默认情况下,json.dumps()方法使用ASCII编码。将ensure_ascii=False可以输出一个带有UTF-8编码的JSON字符串。

sort_keys:默认情况下,json.dumps()方法按键的字母顺序进行编码。可以通过设置sort_keys=True按键名称排序输出。

5. 总结

在Python中,内置的json模块可以方便地进行JSON数据的编解码操作。使用json.dumps()方法可以将Python对象编码为JSON字符串,使用json.loads()方法可以将JSON字符串解码为Python对象。

通过添加json选项可以美化或者压缩输出结果,同时也可以跳过非字符串key, 或者在输出时按键名称排序。

上一篇:Python之pathlib用法

下一篇:python之os模块

后端开发标签