📜  使用 JSON 的两个程序之间的通信

📅  最后修改于: 2022-05-13 01:54:25.202000             🧑  作者: Mango

使用 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(应用程序编程接口)。