前端解析json数组-json解析数组
英文|
翻译 | 小爱同学在本文中,我们将学习如何在 Python 中处理 JSON 数据。 JSON 代表 JavaScript Object Notation,这是一种流行的基于文本的数据格式。 尽管 JSON 是从 JS 派生出来的,但它独立于语言已有一段时间了。 因此,任何编程语言都可以使用它。 它用于存储和交换数据。 例如,从 API 中拉取数据或在某些文档数据库中使用它时,数据主要是 JSON 格式。 让我们举个例子。
{
"name":"Ashton",
"age":15,
"grade":8,
"subjects":["math", "english", "science"],
}
可以看到,上面的数据可读性很强,看起来很像 Python。 数据项由键/值对组成,键/值对之间有冒号 (:)。 此外,两个数据项由逗号 (,) 分隔。
开始吧,让我们开始吧,看看如何在 Python 中处理 JSON 数据。
Python 原生支持 JSON前端解析json数组,并为此提供了一个内置模块 json。 在代码顶部添加以下行以开始使用 JSON。
import json
首先,我们看一下如何进行序列化,即对JSON数据进行编码。
编码 JSON 数据(Python 到 JSON)
将 JSON 写入文件
json 模块提供了 dump() 方法来将 JSON 数据写入文件。 它需要两个必需的参数,一个要编码的 Python 对象和一个类文件实例。 考虑以下示例。
import json
student_data = {
"name":"Ashton",
"age": 15,
"grade": 8,
"subjects": ["math", "english", "science"]
}
f = open("output.json", 'w')
json.dump(student_data, f)
输出
{"name": "Ashton", "age": 15, "grade": 8, "subject": ["math", "english", "science"]
如上例所示,我们有一个 Python 字典,其中包含有关学生的信息,例如姓名、年龄、年级和科目。 我们以写入模式打开 output.json 文件,然后将 student_data 对象转储到 JSON 文件中。
考虑下表,它显示了 Python 对象到 JSON 的转换。
您还可以使用一些参数以更漂亮的格式编写 JSON 数据。 例如,缩进参数可以采用非负整数或字符串来指定缩进值。
如果传递 0、负值或空字符串,dump() 将只插入换行符。 此外,设置无(默认)会产生最紧凑的表示。
您还可以通过将 True 传递给 sort_keys 参数来按键对数据进行排序。 默认情况下前端解析json数组,它是假的。 让我们举个例子。
import json
student_data = {
"name":"Ashton",
"age": 15,
"grade": 8,
"subjects": ["math", "english", "science"]
}
f = open("output.json", 'w')
json.dump(student_data, f, indent=2, sort_keys=True)
输出
{
"age": 15,
"grade": 8,
"name": "Ashton",
"subjects": " [
"math",
"english",
"science",
]
}
正如您在上面的输出中看到的那样,它更清晰、更易于阅读。
将 Python 对象转换为 JSON 字符串
要将序列化对象转换为 JSON 字符串,可以使用 dumps() 方法。 它类似于 dump(),不同之处在于它不需要文件对象,它返回一个包含 JSON 格式信息的字符串。 让我们来看看。
import json
student_data = {
"name":"Ashton",
"age": 15,
"grade": 8,
"subjects": ["math", "english", "science"]
}
json_string = json.dumps(student_data, indent=2, sort_keys=True)
print(json_string)
print(type(json_string))
输出
{
"age": 15,
"grade": 8,
"name": "Ashton",
"subjects": [
"math",
"english",
"science"
]
}
<class 'str'>
现在,让我们继续看看如何执行反序列化,即解码 JSON 数据。
解码 JSON 数据(将 JSON 转换为 Python)
解析 JSON 文件
json 模块提供了 load() 方法来将 JSON 从文件加载到 Python 对象中。 它需要一个类似文件的对象作为其必需的参数。 例子如下。
import json
f = open('sample.json', 'r')
data = json.load(f)
print(data)
print(type(data))
输出
{'name':'Ashton','age':15,'grade':8,'address':None,subject':['math','english','science']}
dict'>
下表列出了从 JSON 到 Python 的转换规则。
将 JSON 字符串解析为对象
同样,您可以使用 loads() 方法将 JSON 字符串转换为 Python 对象。 它采用包含 JSON 文档的字符串作为其必需参数。 让我们来看看。
import json
json_str = '''{
"name":"Ashton",
"age":15,
"grade":8,
"address":null,
"subjects":["math", "english", "science"]
}'''
data_parsed = json.loads(json_str)
print(data)
print(type(data))
输出
{'name': 'Ashton', 'age': 15, 'grade': 8, 'address': None, 'subjects':
['math', 'english', 'science']}
<class 'dict'>
在这里,json_str 变量包含多行字符串中的 JSON 文档。 使用 loads() 方法将其解析为字典。
这里还有一点需要注意的是,如果一个Python对象被序列化,然后反序列化,它不一定等于原来的对象。 考虑以下示例。
import json
student_data = {
"name":"Ashton",
"age": 15,
"grade": 8,
"subjects": ("math", "english", "science")
}
json_string = json.dumps(student_data, indent=2, sort_keys=True)
parsed_data = json.loads(json_string)
print(student_data==parsed_data)
输出
错误的
在上面的示例中,student_data 包含一个键 subject,其值为元组类型。 当student_data序列化为JSON字符串时,subjects的值会按照转换规则转换为数组。 当我们执行解码时,它被转换为列表而不是元组。 因此,原始数据和解码后的数据是不相等的。
学习更多技能
请点击下方公众号