什么是 JSON 以及如何合并两个 Json 字符串?

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 字典的更多信息。

让我们学习如何从 python 字典和列表创建 JSON 对象。

从字典创建 JSON

我们可以从 python 字典创建一个 JSON 对象。让我们看看如何做到这一点。

查看这篇文章以了解有关字典到 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 对象。但也可以从列表创建 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 字符串合并到另一个 Json 中

在此示例中,我们将看到jsonmergePyPI 存储库的库的使用。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

将两个 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 字符串解析为字典后,我们可以将合并的 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 字符串合并为一个数据帧

结论

总而言之,我们已经讨论了 JSON 是什么以及它在 Web 应用程序中的用法。我们已经观察了 json 对象和 json 数组的语法并讨论了一些示例。

我们已经看到了两种创建 json 对象的方法。我们尝试将字典转换为 json 对象,并看到 python 列表到 json 对象的转换。

接下来,我们尝试使用第三方库合并两个 json 字符串,jsonmerge将这两个字符串合并到另一个 json 对象中。

采用相同的字符串,我们尝试将它们合并到字典中,首先使用 将它们解析为字典jsonloads(),然后使用 合并它们**

将字符串转换为字典后,我们将它们合并为数据框。

参考

要了解有关 jsonmerge 库的更多信息,请访问 PyPI 官方文档。

请参阅 Pandas 文档以了解有关 pd.DataFrame 方法的更多信息。