前端解析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 jsonstudent_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 jsonstudent_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 jsonstudent_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 jsonf = 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 jsonjson_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 jsonstudent_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的值会按照转换规则转换为数组。 当我们执行解码时,它被转换为列表而不是元组。 因此,原始数据和解码后的数据是不相等的。
学习更多技能
请点击下方公众号

 
  
  
  当前位置:
当前位置:  上一篇
上一篇  
   
        
 
                 
                 
                 
              
              
             
              
              
             
              
              
            