Python json简介
您知道如何从在线API传输数据或将不同类型的数据存储到本地计算机吗?无论以何种方式,您都会沉浸在JSON中,JSON代表[Java Script Object Notation]。它是一种著名的流行数据格式,用于表示半结构化数据。让我们更详细地了解Python JSON。
Python中的JSON简介
JSON是Java Script Object Notation的缩写,对象表示是一种以有组织且简单的方式存储信息的方式。在浏览器和服务器之间交换数据时,数据必须是文本形式。
345.png
如果您想知道它是否是JavaScript?那么,答案是否。它是一个由文本组成的脚本,用于以人和机器可读的格式存储和传输数据。它是一种受JavaScript启发的小型、轻量级数据格式,通常用于文本或字符串格式。一包JSON几乎与一本Python字典相同。现在,你一定在想;
如何在Python中读取JSON文件?
问题的答案是,您必须导入通常将Python数据类型转换为JSON字符串文件的JSON模块。它由直接从JSON文件读取和写入的JSON函数组成,Python有一个内置的JSON包,是标准库的一部分,因此您不需要安装它。
示例:
import json
既然您已经了解了Python中的JSON,那么让我们更深入地了解一下解析。
解析中:
JSON库可以从字符串或文件解析JSON。它还可以将JSON解析为Python字典或列表,反之亦然。解析通常分两个阶段进行:
1.从JSON到Python的转换
2.从Python到JSON的转换
JSON到Python的转换:
您可以使用 json.loads()将JSON字符串转换为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(data)
输出:
346.png从上面的输出中可以看到,它打印了一本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的转换:
Python对象可以使用json.dump()转换为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)
输出:
347.png输出将是JSON字符串类型。我已经演示了JSON到Python转换中的数据类型,随后将遵循相同的过程来打印数据类型。
pandas解析JSON:
- 可以使用以下泛型结构将JSON字符串加载到DataFrame中。
import pandas as pd
pd.read_json(r'Path where you saved the JSON fileFile Name.json')
-
准备JSON字符串。
-
创建一个JSON文件,我们正在使用的文件是noble_prize.json。
-
将JSON文件加载到Pandas DataFrame中。 JSON字符串可以通过以下步骤解析成Pandas数据帧:下面实现的代码将我的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)
输出:
348.png接下来,让我们看看如何用Python序列化JSON。
JSON序列化[encode]:
序列化JSON仅仅意味着您正在编码JSON。它将给定的Python数据结构(例如:dict)转换为其有效的JSON对象。为了处理文件中的数据流,Python中的JSON库使用json.dumps
漂亮打印:
Pretty Print负责代码对齐,并使其成为人类可读的格式。让我们看一下下面的示例,其中我传递了两个参数“SORT_KEYS”,这两个参数总是返回布尔值True和“缩进”空格。
示例:
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)
349.png
编码演示:
在这个编码演示中,我将使用这里给出的名为“NOBELPRIZE”的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”转储。
350.png
示例(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文件到其各自的PythonObject的更改。
351.png
这就是我们的文章“Python JSON”的结尾。我希望您对所有与JSON、解析、序列化和反序列化相关的概念都很清楚。