使用 JSON 的两个程序之间的通信
JSON 代表 JavaScript 对象表示法。为了在计算机和人类之间进行通信,我们使用编程语言。要在两个程序之间进行通信,必须有一个通用的数据格式,这里我们使用 JSON 格式。假设您有一个应用程序,前端用Python编写,后端用Java编写。现在你需要在这两种语言之间进行通信来做一些事情。 (例如,测验网站将接收您在 Frontend 中的输入并将数据发送到 Backend 以计算结果并将结果返回给 Frontend)。
所以这里我们使用 JSON 在两个名为Python和Java的程序之间进行通信。我们可以使用通用的文本格式进行交流,但文本格式会包含很多复杂性。但是,JSON 是轻量级且易于使用的。 JSON 与语言无关,因此可以被任何编程语言使用。
序列化:
序列化是将编程数据转换为 JSON 文本的过程。例如,在Python中,我们可以使用作为Python对象的字典来转换为 JSON 文本。这个将Python对象转换为 JSON 文本的过程称为序列化。
反序列化:
反序列化是序列化的逆过程。它是将 JSON 文本转换为编程数据的过程。在Python中,我们可以将 JSON 文本转换为称为Python字典的Python对象。
将两个变量从Python转移到Java:
为了在两个程序之间进行通信,我们需要使用一种语言序列化数据并使用其他语言反序列化。在这里,我们使用Python序列化数据并使用Java反序列化相同的数据。因此,我们将数据从Python传输到Java。在这里,让我们将两个变量 'a' 和 'b' 从Python传输到Java并在Java中计算结果。
使用Python进行序列化:
让我们使用Python代码生成一个 JSON 文件,如下所示。
Python
# Import JSON
import json
# using MAP
data = {"a" : 1, "b" : 2.3}
with open("JSONData.json", "w") as file:
json.dump(data, file)
# JSONData.json file will be created
Java
import java.io.*;
// Import JSON parser and JSONObject.
import org.json.simple.parser.*;
import org.json.simple.JSONObject;
// JSONFileRead is Main class
class JSONFileRead {
public static void main(String[] args) throws FileNotFoundException,
IOException, ParseException {
// File Handling Operations using JSON objects
// like JSON parser and JSONObject.
FileReader fileReader = new FileReader("JSONData.json");
JSONObject jsonObject = (JSONObject) new JSONParser().parse(fileReader);
// Var a will take and get long value.
// Var b will take and get double value.
Long a = (Long)jsonObject.get("a");
Double b = (Double)jsonObject.get("b");
// Will print the result as sum of both the Variable.
System.out.println("The sum of two variables is: " + (a + b));
}
}
JSONData.json 文件将包含如下内容。
输出:
{"a" : 1, "b" : 2.3}
使用Java反序列化:
在Java中,没有用于 JSON 阅读器的内置库。我们需要在我们的 gradle 项目中添加一个依赖项或下载 jar 文件。我们有 Jackson 和 simple-json 库。这里使用了 simple-json 库。
Java
import java.io.*;
// Import JSON parser and JSONObject.
import org.json.simple.parser.*;
import org.json.simple.JSONObject;
// JSONFileRead is Main class
class JSONFileRead {
public static void main(String[] args) throws FileNotFoundException,
IOException, ParseException {
// File Handling Operations using JSON objects
// like JSON parser and JSONObject.
FileReader fileReader = new FileReader("JSONData.json");
JSONObject jsonObject = (JSONObject) new JSONParser().parse(fileReader);
// Var a will take and get long value.
// Var b will take and get double value.
Long a = (Long)jsonObject.get("a");
Double b = (Double)jsonObject.get("b");
// Will print the result as sum of both the Variable.
System.out.println("The sum of two variables is: " + (a + b));
}
}
输出:
在这里,您将看到 a =1 和 b= 2.3 的结果,如上述程序所示。现在,它将打印两者的总和。
The sum of two variables is: 3.3
此处使用的示例非常小。可以在Python中完成相同的添加。然而,在大型项目中,一些复杂的计算可以用Java而不是Python来完成。在这种情况下,我们使用Java进行计算。 JSON 数据通信的主要应用是 API(应用程序编程接口)。