📅  最后修改于: 2023-12-03 15:34:25.043000             🧑  作者: Mango
在Python中,JSON(JavaScript Object Notation)是一种用于数据交换的轻量级格式,它是基于JavaScript的一个子集。JSON使用轻量级的文本格式来描述数据对象,用于发送和接收数据。Python中的json库可以用来编码和解码JSON数据。JSON数据可以被编码为Python数据结构,然后在Python中进行处理。
在编码JSON数据时,通常需要遵循一定的格式规则,这就是JSON的格式化。本文将介绍Python中的JSON格式化,包括如何使用json库对JSON数据进行格式化操作。
JSON格式化是指按照一定的规则,将JSON数据按照美观易读的方式进行排版,使其更容易被人类阅读和理解。JSON数据格式的基本规则如下:
JSON数据结构必须是正确的嵌套。
每个键都必须用双引号(")括起来,而不是单引号(')。
字段名和值之间必须用冒号(:)分隔。
多个键-值对之间必须用逗号(,)分隔。
对象必须用花括号({})括起来,数组必须用方括号([])括起来。
JSON数据不能包含函数、日期等Python特定的对象。
下面是一个简单的JSON格式化示例:
{
"name": "Tom",
"age": 21,
"contact": {
"email": "tom@qq.com",
"tel": "123456789"
},
"friends": [
{
"name": "Jerry",
"age": 20
},
{
"name": "Bob",
"age": 22
}
]
}
Python中的json库提供了多种对JSON数据进行编解码和格式化的函数,其中最常用的是dumps和dump函数,它们都可以将Python数据类型转换为JSON格式的字符串。而load和loads则是将JSON格式的字符串转换为Python数据类型。
dumps函数用于将Python数据类型转换成JSON格式的字符串,并进行格式化。它接受四个参数:obj、skipkeys、ensure_ascii、sort_keys。其中,obj表示需要转换的Python对象,skipkeys默认为False,表示不忽略非字符串的键;ensure_ascii也默认为True,表示将所有非ASCII字符转义;sort_keys默认为False,表示按照键的插入顺序输出。
示例代码如下:
import json
data = {
"name": "Tom",
"age": 21,
"contact": {
"email": "tom@qq.com",
"tel": "123456789"
},
"friends": [
{
"name": "Jerry",
"age": 20
},
{
"name": "Bob",
"age": 22
}
]
}
json_str = json.dumps(data, indent=4, sort_keys=True, ensure_ascii=False)
print(json_str)
输出结果如下:
{
"age": 21,
"contact": {
"email": "tom@qq.com",
"tel": "123456789"
},
"friends": [
{
"age": 20,
"name": "Jerry"
},
{
"age": 22,
"name": "Bob"
}
],
"name": "Tom"
}
dump函数用于将Python数据类型转换成JSON格式的字符串,并写入文件。它接受三个参数:obj、fp、skipkeys。其中,obj表示需要转换的Python对象,fp为写入文件的句柄,skipkeys默认为False,表示不忽略非字符串的键。
示例代码如下:
import json
data = {
"name": "Tom",
"age": 21,
"contact": {
"email": "tom@qq.com",
"tel": "123456789"
},
"friends": [
{
"name": "Jerry",
"age": 20
},
{
"name": "Bob",
"age": 22
}
]
}
with open('data.json', 'w', encoding='utf-8') as f:
json.dump(data, f, indent=4, sort_keys=True, ensure_ascii=False)
输出结果为:
{
"age": 21,
"contact": {
"email": "tom@qq.com",
"tel": "123456789"
},
"friends": [
{
"age": 20,
"name": "Jerry"
},
{
"age": 22,
"name": "Bob"
}
],
"name": "Tom"
}
load函数用于将JSON格式的字符串转换成Python数据类型。它接受一个参数:fp,表示读入的文件句柄。
示例代码如下:
import json
with open('data.json', 'r', encoding='utf-8') as f:
data = json.load(f)
print(data)
输出结果为:
{
'name': 'Tom',
'age': 21,
'contact': {
'email': 'tom@qq.com',
'tel': '123456789'
},
'friends': [
{
'name': 'Jerry',
'age': 20
},
{
'name': 'Bob',
'age': 22
}
]
}
loads函数用于将JSON格式的字符串转换成Python数据类型。它接受一个参数:s,表示需要转换的JSON格式字符串。
示例代码如下:
import json
json_str = '''
{
"name": "Tom",
"age": 21,
"contact": {
"email": "tom@qq.com",
"tel": "123456789"
},
"friends": [
{
"name": "Jerry",
"age": 20
},
{
"name": "Bob",
"age": 22
}
]
}
'''
data = json.loads(json_str)
print(data)
输出结果为:
{
'name': 'Tom',
'age': 21,
'contact': {
'email': 'tom@qq.com',
'tel': '123456789'
},
'friends': [
{
'name': 'Jerry',
'age': 20
},
{
'name': 'Bob',
'age': 22
}
]
}
本文介绍了Python中的JSON格式化,包括JSON格式化基础和使用json库对JSON数据进行格式化操作。在使用json库对JSON数据进行格式化操作时,我们可以使用dumps函数将Python数据类型转换成JSON格式的字符串,并进行格式化输出;如果需要将JSON数据写入文件,可以使用dump函数;如果需要将JSON格式的字符串转换成Python数据类型,可以使用loads函数;如果需要将JSON格式的字符串从文件中读入并转换成Python数据类型,可以使用load函数。通过本文的介绍和示例,相信您已经掌握了Python中的JSON格式化方法,希望本文对您有所帮助。