JSON 是 JavaScript 对象表示法的缩写。由于轻量级且独立于语言,JSON 成为最常用的数据交换和交换格式,主要用于在 Web 应用程序中将数据从客户端传输到服务器。
在这篇文章中,我们将重点介绍 JSON 格式以及如何合并两个 JSON 字符串的一些示例。
什么是 JSON?
如上所述,JSON 代表 JavaScript 对象表示法。JSON 是自描述的,很容易被人类理解。JSON 与语言无关,这意味着它可以在任何支持其语法的语言中使用。
谈到 JSON 的语法,JSON 对象括在大括号内并用逗号分隔。
下面给出一个例子。
{ "name" : 'X' , "age" : 20 } |
JSON 数组括在方括号内。
下面给出了 JSON 数组的示例。
"nameage" :[ { "name" : "X" , "age" : 20 }, { "name" : "Y" , "age" : 18 "}, { "name" : "Z" , "age" : "22" } ] |
在这个例子中,对象nameage
是一个键,方括号中的所有元素都被视为关联值。
您可能已经猜到,JSON 以键:值对的形式存储数据,类似于 Python 中的字典。
让我们学习如何从 python 字典和列表创建 JSON 对象。
从字典创建 JSON
我们可以从 python 字典创建一个 JSON 对象。让我们看看如何做到这一点。
但在此之前,我们需要了解Python中支持使用JSON对象的模块。这个Python模块是JSON,通过导入这个模块,我们可以读取和修改JSON对象。
代码如下。
1
2
3
4
5
6
7
8
9
10
|
#creation of json from a dictionary import json dictn = { "firstname" : "XY" , "age" : 25 , "lastname" : "Z" , "city" : "LA" } j1 = json.dumps(dictn) print (j1) |
这是代码的简单解释。
在第一行中,我们使用 import 关键字导入 JSON 模块。
在下面的行中,我们创建一个名为 dictn 的变量来存储字典。该字典包含四个键——名字、年龄、姓氏和城市。“:”之后的元素是与每个键关联的值。
接下来,我们创建另一个名为 j1 的变量来存储转换后的 JSON 对象。我们使用 JSON 模块的一个特殊方法,即 json.dumps()。此方法用于将任何 python 对象转换为 JSON 字符串。该字典作为参数传递给此方法,并返回一个 JSON 对象。
在最后一行中,我们在 的帮助下打印 JSON 字符串print()
。
输出如下所示。
从列表创建 JSON 数组
我们已经看到使用字典中的键值对创建 JSON 对象。但也可以从列表创建 JSON 数组。
代码如下。
1
2
3
4
5
|
import json lis = [ "Honda" , "Suzuki" , "Toyota" , "Volkswagen" , "Jeep" ] print ( "The list format:" ,lis) j2 = json.dumps(lis) print ( "JSON array:" ,j2) |
如前所述,我们导入 JSON 模块以便能够使用 JSON。
我们正在初始化一个名为 lis 的变量,以列表格式存储元素。该列表包含一些非常受欢迎的汽车。
在下面的行中,我们将打印上面创建的列表。
变量j2被初始化以存储转换后的JSON格式。我们正在使用该json.dumps()
方法将列表转换为 JSON 对象。
最后,我们打印 JSON 数组。
输出如下所示。
观察输出。列表格式将元素存储在单引号中,而在 JSON 数组中,元素存储在双引号中。
如何合并两个 JSON 字符串?
假设您正在处理项目并处理多个 JSON 对象文档。您可能希望将所有这些组合成一个结构,以便轻松定位数据。合并 JSON 字符串将在数据管理中派上用场。
我们可以将多个 json 字符串合并为一个实体。我们将看以下示例。
- 将两个 json 字符串合并到另一个 json 中
- 将两个 json 字符串合并到字典中
- 将两个 JSON 字符串合并到一个数据框中
将两个 JSON 字符串合并到另一个 Json 中
在此示例中,我们将看到jsonmerge
PyPI 存储库的库的使用。PyPI 是 python 包的第三方存储库。该社区提供的软件包可帮助开发人员使用 Python 官方可能不提供的服务。
让我们看看代码。
1
2
3
4
5
6
7
8
9
10
|
#to json import json import jsonmerge s1 = '{"firstname": "John", "age": 30,"lastname":"Doe"}' s2 = '{"modeofwork": "Remote","city": "New York", "country": "USA"}' j1 = json.loads(s1) j2 = json.loads(s2) merg = jsonmerge.merge(j1,j2) mergej = json.dumps(merg) print (mergej) |
由于我们正在处理 JSON 字符串,因此我们正在导入 json 模块。
在下一行中,我们将导入 jsonmerge 库,它将用于合并两个 JSON 字符串。
s1 和 s2 是我们要合并的两个 JSON 字符串。
我们正在使用json.loads()
将 json 字符串转换为字典。这两个字典存储在名为 j1 和 j2 的变量中。
这两个字典使用 jsonmerge 库的 merge 方法进行合并。这个合并的字典存储在一个名为 merg 的变量中。
该字典作为参数传递给该jsonloads()
方法,该方法返回一个 JSON 对象。该 JSON 对象存储在名为 mergej 的变量中。
最后,我们打印合并后的 JSON 对象。
输出如下所示。
将两个 JSON 字符串合并到字典中
两个 JSON 字符串也可以合并形成一个字典。在这种方法中,我们将使用另一种语法来合并字符串。
代码如下。
#to a dict import json s1 = '{"firstname": "John", "age": 30,"lastname":"Doe"}' s2= '{"modeofwork": "Remote","city": "New York", "country": "USA"}' dictn1 = json.loads(s1) dictn2 = json.loads(s2) merged = {**dictn1, **dictn2} print(merged) |
像往常一样,我们导入 json 模块来处理 JSON 字符串。
我们使用与上面示例相同的 json 字符串。
但是,我们将在第五行和第六行中将字符串解析为字典。字典存储在两个名为 dictn1 和 dictn2 的新变量中。
这两个词典在 的帮助下合并**
。合并后的字典存储在名为 merged 的变量中。
最后,我们指着字典。
输出如下所示。
将两个 JSON 字符串合并到一个数据框中
将 JSON 字符串解析为字典后,我们可以将合并的 JSON 字符串转换为数据帧。
1
2
3
4
5
6
7
8
9
10
|
#to a df import json import pandas as pd s1 = '{"firstname": "John", "age": 30,"lastname":"Doe"}' s2 = '{"modeofwork": "Remote","city": "New York", "country": "USA"}' dict1 = json.loads(s1) dict2 = json.loads(s2) mergedf = { * * dict1, * * dict2} df = pd.DataFrame(mergedf,index = [ 0 ]) print (df) |
我们在前两行导入 json 模块和 pandas 库。
在我们借助 的帮助将 json 字符串解析为字典后json.loads()
,我们将它们合并到一个名为 mergedf 的字典中。
接下来,我们使用该方法将此字典传递到数据框中pd.DataFrame
。
最后,我们打印数据框。
数据框如下。
结论
总而言之,我们已经讨论了 JSON 是什么以及它在 Web 应用程序中的用法。我们已经观察了 json 对象和 json 数组的语法并讨论了一些示例。
我们已经看到了两种创建 json 对象的方法。我们尝试将字典转换为 json 对象,并看到 python 列表到 json 对象的转换。
接下来,我们尝试使用第三方库合并两个 json 字符串,jsonmerge
将这两个字符串合并到另一个 json 对象中。
采用相同的字符串,我们尝试将它们合并到字典中,首先使用 将它们解析为字典jsonloads()
,然后使用 合并它们**
。
将字符串转换为字典后,我们将它们合并为数据框。