共计 3941 个字符,预计需要花费 10 分钟才能阅读完成。
本文分享自华为云社区《从零开始学 python | 什么是 Python JSON 以及如何实现?》,原文作者:Yuchuan。
您晓得如何从在线 API 传输数据或将各种数据存储到本地计算机吗?您曾经将本人沉浸于 JSON 的一种形式中,JSON 示意 Java Script Object Notation。它是一种驰名的风行数据格式,用于示意半结构化数据。让咱们具体理解 Python JSON。
本文将探讨以下方面:
- Python JSON 简介
- 如何在 Python 中读取 JSON 文件
- 解析中
- 从 Python 转换为 JSON
- 从 JSON 转换为 Python
- 熊猫解析 JSON
- JSON 序列化[编码]
- 丑陋的印刷
- JSON 的反序列化[解码]
- 编码示范
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 json
people_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 json
people_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 json
people_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 pd
pd.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 pd
import json
with open(r'C:UsersHarshit_KantDesktopnobel.prize.json') as f:
data = json.load(f)
print (data)
df = pd.DataFrame
print(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 json
people_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 json
with 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 json
with 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 的解析,序列化和反序列化无关的所有概念感到分明。
点击关注,第一工夫理解华为云陈腐技术~