Python中的JSON简介

您知道如何从在线API传输数据或将不同类型的数据存储到本地计算机吗?无论以何种方式,您都会沉浸在JSON中,JSON代表[Java Script Object Notation]。它是一种著名的流行数据格式,用于表示半结构化数据。让我们更详细地了解Python JSON。

Python中的JSON简介

JSON是Java Script Object Notation的缩写,对象表示是一种以有组织且简单的方式存储信息的方式。在浏览器和服务器之间交换数据时,数据必须是文本形式。

如果您想知道它是否是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)
​

输出:

从上面的输出中可以看到,它打印了一本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)
​

输出:

输出将是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)
​

输出:

接下来,让我们看看如何用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)
​

 

编码演示:

在这个编码演示中,我将使用这里给出的名为“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”转储。

示例(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的更改。

这就是我们的文章“Python JSON”的结尾。我希望您对所有与JSON、解析、序列化和反序列化相关的概念都很清楚。

学习安排上

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。【保证100%免费】

视频文档获取方式:

这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

 

 

 

 

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值