摘要:您知道如何从在线API传输数据或将各种数据存储到本地计算机吗?您已经将自己沉浸于JSON的一种方式中,JSON表示Java Script Object Notation。它是一种著名的流行数据格式,用于表示半结构化数据。让我们详细了解Python JSON。
本文将讨论以下方面:
- Python JSON简介
- 如何在Python中读取JSON文件
- 解析中
- 从Python转换为JSON
- 从JSON转换为Python
Python JSON简介:
JSON代表JAVA小号script objectn浮选是存储在一个有组织的和容易的方式信息的方式。在浏览器和服务器之间交换数据时,数据必须为文本形式。
如果您想知道它是否是JavaScript?那么答案是否定的。它是一个由文本组成的脚本,用于以人类和机器可读格式存储和传输数据。它是一种受JavaScript启发的小型轻量数据格式,通常以文本或字符串格式使用。JSON数据包几乎等同于python字典。现在,您一定想知道。
如何在Python中读取JSON文件?
问题的答案是,您必须导入JSON模块,该模块通常将Python数据类型转换为JSON字符串文件。它由直接从JSON文件读取和写入的JSON函数组成。Python具有内置的JSON包,并且是标准库的一部分,因此您无需安装它。
例子:
import json
现在您已经了解了Python中的JSON,下面让我们更深入地分析Parsing。
解析:
JSON库可以从字符串或文件中解析JSON 。它还可以将JSON解析到Python字典或列表中,反之亦然。解析通常分为两个阶段:
- 从JSON转换为Python
- 从Python转换为JSON
让我们更好地了解这两个阶段。
从JSON转换为Python:
您可以使用以下方法将JSON字符串转换为Python json.loads(). :
例子:
import jsonpeople_string = \'\'\'{\"people\":[{\"emp_name\": \"John smith\",\"emp_no.\": \"924367-567-23\",\"emp_email\": [\"johnsmith@dummyemail.com\"],\"has_license\": \"false\"},{\"emp_name\": \"harshit kant\",\"emp_number\": \"560-555-5153\",\"emp_email\": \"null\",\"has_license\": \"true\"}]}\'\'\'data = json.loads(people_string)print(data)
输出:
从上面的输出中可以看到,它已经打印了Python字典。让我们打印数据类型以更好地理解。
例子:
import jsonpeople_string = \'\'\'{\"people\":[{\"emp_name\": \"John smith\",\"emp_no.\": \"924367-567-23\",\"emp_email\": [\"johnsmith@dummyemail.com\"],\"has_license\": \"false\"},{\"emp_name\": \"harshit kant\",\"emp_number\": \"560-555-5153\",\"emp_email\": \"null\",\"has_license\": \"true\"}]}\'\'\'data = json.loads(people_string)print(type(data)) #prints the datatype
输出:
<class\'dict\'>
现在,您已经熟悉一个转换,让我们在第二阶段看看另一种转换类型。
从Python转换为JSON:
通过使用json.dumps(). 下面给出的示例,可以将Python对象转换为JSON字符串:
例子:
import jsonpeople_string = \'\'\'{\"people\":[{\"emp_name\": \"John smith\",\"emp_no.\": \"924367-567-23\",\"emp_email\": [\"johnsmith@dummyemail.com\"],\"has_license\": \"false\"},{\"emp_name\": \"harshit kant\",\"emp_no.\": \"560-555-5153\",\"emp_email\": \"null\",\"has_license\": \"true\"}]}\'\'\'data = json.loads(people_string)new_string = json.dumps(data)print(new_string)
输出:
输出将是JSON字符串类型。我已经在JSON到Python的转换中演示了数据类型,将遵循相同的过程来打印数据类型。
让我们继续前进,看看Pandas如何解析JSON。
熊猫解析JSON:
可以通过以下步骤将JSON字符串解析为pandas Dataframe:
- 以下通用结构可用于将JSON字符串加载到DataFrame中
import pandas as pdpd.read_json(r\'Path where you saved the JSON fileFile Name.json\')
- 准备JSON字符串。
- 创建一个我们正在使用的JSON文件nobel_prize.json。
- 将JSON文件加载到pandas DataFrame中。
下面实现的代码将我的JSON文件加载到DataFrame中。
import pandas as pdimport jsonwith open(r\'C:UsersHarshit_KantDesktopnobel.prize.json\') as f:data = json.load(f)print (data)df = pd.DataFrameprint(df)
输出:
继续前进,让我们看看如何在Python中序列化JSON。
JSON序列化[编码]:
序列化JSON只是意味着您正在编码JSON。它将给定的Python数据结构(ex:dict)转换为其有效的JSON对象。为了处理文件中的数据流,Python中的JSON库使用dump()和dumps()方法,该方法进行转换并使其易于将数据写入文件中。
下表是说明将Python数据类型转换为各自的JSON类型的表格。
要记住的要点:
dump() –将数据转换为JSON文件
dumps() –将数据转换为JSON字符串
load() –将JSON文件转换为Python对象
loads()–将JSON字符串的对象转换为Python对象
漂亮的印刷:
Pretty Printing负责代码对齐并使其以人类可读的格式进行。让我们看下面的示例,其中我传递了两个参数\’sort_keys\’,这些参数始终返回布尔True值和\’indent\’空格。
例子:
import jsonpeople_string = \'\'\'{\"people\":[{\"emp_name\": \"John smith\",\"emp_no.\": \"924367-567-23\",\"emp_email\": [\"johnsmith@dummyemail.com\"],\"has_license\": \"false\"},{\"emp_name\": \"harshit kant\",\"emp_no.\": \"560-555-5153\",\"emp_email\": \"null\",\"has_license\": \"true\"}]}\'\'\'data = json.loads(people_string)new_string = json.dumps(data, sort_keys=True, indent=3)print(new_string)
输出:
继续进行Python JSON教程,让我们了解JSON的反序列化。
JSON的反序列化[Decode]:
JSON的反序列化与序列化完全相反,也就是说,这意味着您正在解码JSON。它将通过使用执行转换的load()和load()方法将给定的JSON字符串转换为Python对象。
下表是说明将JSON数据类型转换为其相应的Python类型的表格。
继续进行“ Python JSON”教程。我将通过编码的角度向您展示一个同时进行序列化和反序列化的实时示例。
编码演示:
在此编码演示中,我将使用此处给出的JSON数据集,称为“诺贝尔奖” 。您将学习如何通过JSON文件进行序列化和反序列化。
示例(JSON数据集的序列化):
import jsonwith open(\'nobel_prize.json.html\') as f:data = json.load(f)with open(\'new_nobel_prize.json.html\') as f:json.dump(data,f,indent=2)
输出:
Python代码已成功编译,并创建了一个新文件“ new_nobel_prize.json”,将从现有文件“ nobel_prize.json”中转储数据。
示例(JSON数据集的反序列化):
import jsonwith open(\'nobel_prize.json.html\') as f:data = json.load(f)for nobel_prize in data[\'prizes\']:print(nobel_prize[\'year\'],nobel_prize[\'category\'])
输出:
该代码段显示了从JSON文件到其相应的Python对象的更改。
希望您对与JSON的解析,序列化和反序列化有关的所有概念感到清楚。
本文分享自华为云社区《从零开始学python | 什么是Python JSON以及如何实现?》,原文作者:Yuchuan 。
点击关注,第一时间了解华为云新鲜技术~