よく使用される 4 つの JSON パーサーによってオブジェクト変換が完了するケース

1. JSON の基本形式:

ブログの JSON 形式には優れた紹介文が数多くありますが、次のブログの紹介文は比較的完成度が高いと思います。

ポータル: json 基本データ形式


2. JSON パーサーの概要:

JSON パーサーは通常、次の 2 つの主要な関数で構成されます解析和生成解析関数は、JSON 文字列をメモリ内のデータ構造 (通常はオブジェクト、配列、またはキーと値のペアのコレクション) に解析します。生成関数は、メモリ内のデータ構造を JSON 文字列に変換します。

多くのプログラミング言語には、JSON データを簡単に処理できる組み込みの JSON パーサーとジェネレーターが用意されています。たとえば、JavaScript の JSON.parse() 関数は、JSON 文字列を解析して JavaScript オブジェクトに変換するために使用され、JSON.stringify() 関数は JavaScript オブジェクトを JSON 文字列に変換するために使用されます。Python、Java、C# などの他のプログラミング言語も同様の機能を提供します。

JSON パーサーを使用すると、特に Web アプリケーションや など、異なるアプリケーション間でデータを簡単に転送および処理できます客户端-服务器通信Web から JSON データを受信する場合でも、リモート サーバーにデータを送信する場合でも、JSON パーサーは不可欠なツールです。


3. 一般的に使用される JSON パーサー:

1. ジャクソン:

Jackson は、高性能かつ柔軟な JSON 解析および生成機能を提供する、非常に人気のある JSON 処理ライブラリです。JSON データを Java オブジェクトにマッピングし、Java オブジェクトを JSON 形式に変換できます。Jackson は、JSON と Java オブジェクト間のマッピング関係をさらに制御するために使用できるアノテーションもサポートしています。

首先,您需要在您的Java项目中添加Jackson库的依赖。如果使用Maven进行项目管理,
可以在pom.xml文件中添加以下依赖项:
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.12.3</version>
</dependency>
接下来,假设您有一个JSON字符串如下:
{
    
    
  "name": "John Doe",
  "age": 30,
  "email": "[email protected]"
}
现在,让我们看一下如何使用Jackson将该JSON字符串解析为Java对象,并将Java对象转换回JSON字符串:
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonExample {
    
    
    public static void main(String[] args) {
    
    
        String json = "{\"name\":\"John Doe\",\"age\":30,\"email\":\"[email protected]\"}";

        try {
    
    
            // 创建ObjectMapper对象
            ObjectMapper objectMapper = new ObjectMapper();

            // 解析JSON字符串为Java对象
            Person person = objectMapper.readValue(json, Person.class);
            System.out.println("Name: " + person.getName());
            System.out.println("Age: " + person.getAge());
            System.out.println("Email: " + person.getEmail());

            // 将Java对象转换为JSON字符串
            String jsonString = objectMapper.writeValueAsString(person);
            System.out.println("JSON: " + jsonString);
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
    }
}

class Person {
    
    
    private String name;
    private int age;
    private String email;

    // 必须有无参数的构造函数
    public Person() {
    
    
    }

    // getters 和 setters

    // name getter 和 setter
    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    // age getter 和 setter
    public int getAge() {
    
    
        return age;
    }

    public void setAge(int age) {
    
    
        this.age = age;
    }

    // email getter 和 setter
    public String getEmail() {
    
    
        return email;
    }

    public void setEmail(String email) {
    
    
        this.email = email;
    }
}

在上面的示例中,我们首先创建了一个ObjectMapper对象,它是Jackson库中用于解析和生成JSON的主要类。
然后,我们使用readValue()方法将JSON字符串解析为Person类的对象,
并使用writeValueAsString()方法将Person对象转换回JSON字符串。

请注意,Person类必须具有无参数的构造函数,并为每个属性提供相应的getter和setter方法,
以便Jackson可以正确地进行对象与JSON之间的映射。

以上是一个简单的示例,使用Jackson库进行JSON解析和生成的基本功能。
根据需要扩展和修改该示例以满足具体的业务逻辑。

2. グソン:

Gson は、Google が提供するシンプルかつ強力な JSON 解析ライブラリです。JSON 文字列を Java オブジェクトに解析したり、Java オブジェクトを JSON 文字列に変換したりできます。Gson は、解析および生成プロセスの詳細を構成するための便利な API と注釈を多数提供します。

首先,您需要在您的Java项目中添加Gson库的依赖。如果使用Maven进行项目管理,
可以在pom.xml文件中添加以下依赖项:
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.9</version>
</dependency>
接下来,假设您有一个JSON字符串如下:
{
    
    
  "name": "John Doe",
  "age": 30,
  "email": "[email protected]"
}

现在,让我们看一下如何使用Gson将该JSON字符串解析为Java对象,并将Java对象转换回JSON字符串:
import com.google.gson.Gson;

public class JsonExample {
    
    
    public static void main(String[] args) {
    
    
        String json = "{\"name\":\"John Doe\",\"age\":30,\"email\":\"[email protected]\"}";

        try {
    
    
            // 创建Gson对象
            Gson gson = new Gson();

            // 解析JSON字符串为Java对象
            Person person = gson.fromJson(json, Person.class);
            System.out.println("Name: " + person.getName());
            System.out.println("Age: " + person.getAge());
            System.out.println("Email: " + person.getEmail());

            // 将Java对象转换为JSON字符串
            String jsonString = gson.toJson(person);
            System.out.println("JSON: " + jsonString);
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
    }
}

class Person {
    
    
    private String name;
    private int age;
    private String email;

    // 必须有无参数的构造函数
    public Person() {
    
    
    }

    // getters 和 setters

    // name getter 和 setter
    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    // age getter 和 setter
    public int getAge() {
    
    
        return age;
    }

    public void setAge(int age) {
    
    
        this.age = age;
    }

    // email getter 和 setter
    public String getEmail() {
    
    
        return email;
    }

    public void setEmail(String email) {
    
    
        this.email = email;
    }
}

在上面的示例中,我们首先创建了一个Gson对象,它是Gson库中用于解析和生成JSON的主要类。
然后,我们使用fromJson()方法将JSON字符串解析为Person类的对象,并使用toJson()方法
将Person对象转换回JSON字符串。

3. JSON-B:

JSON-B (JSON Binding) は Java EE 8 の一部であり、標準の JSON 解析および生成 API を提供します。JSON-B は、JSON と Java オブジェクト間のマッピングを制御するための注釈と構成オプションを提供します。JSON-B は、Java の標準アノテーションおよび JAX-RS (Java API for RESTful Web Services) フレームワークとシームレスに統合できます。

4.org.json:

org.json は、Java によって提供される単純な JSON パーサーおよびジェネレーターです。これは Java 標準ライブラリに含まれており、JSON データを解析および生成するための基本関数を提供します。機能は比較的シンプルですが、単純な JSON 操作には軽量で使いやすい選択肢です。

在Java标准库中的org.json包中,可以使用JSONObject和JSONArray类来解析和生成JSON数据。
以下是一个使用org.json实现JSON解析和生成的示例代码:
import org.json.JSONArray;
import org.json.JSONObject;

public class JsonExample {
    
    
    public static void main(String[] args) {
    
    
        String json = "{\"name\":\"John Doe\",\"age\":30,\"email\":\"[email protected]\"}";

        try {
    
    
            // 解析JSON字符串
            JSONObject jsonObject = new JSONObject(json);
            String name = jsonObject.getString("name");
            int age = jsonObject.getInt("age");
            String email = jsonObject.getString("email");

            System.out.println("Name: " + name);
            System.out.println("Age: " + age);
            System.out.println("Email: " + email);

            // 生成JSON字符串
            JSONObject newJsonObject = new JSONObject();
            newJsonObject.put("name", "Jane Smith");
            newJsonObject.put("age", 25);
            newJsonObject.put("email", "[email protected]");

            String newJsonString = newJsonObject.toString();
            System.out.println("JSON: " + newJsonString);
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
    }
}


这是一个简单的示例,展示了使用org.json进行JSON解析和生成的基本功能。
尽管功能相对简单,但对于简单的JSON操作,org.json是一个轻量级且易于使用的选择。
如果需求更加复杂,可能需要考虑使用其他功能更强大的JSON库,如Jackson或Gson。

要約する

  • エピソード
    • 1. ObjectMapper オブジェクトを作成する
    • 2. ObjectMapperreadValueメソッドを呼び出して、JSON 文字列を Java オブジェクトとして実現します
    • 3. ObjectMapperwriteValueAsStringメソッドを呼び出して、Java オブジェクトを JSON 文字列に変換します。
  • グソン
    • 1. Gson オブジェクトを作成する
    • 2. fromJsongson のメソッドを呼び出して、JSON 文字列を Java オブジェクトとして実現します
    • 3. gson のメソッドを呼び出して、toJsonJava オブジェクトから JSON 文字列への変換を実現します。
  • org.json Java
    によって提供される単純な JSON パーサーおよびジェネレーター。これは Java 標準ライブラリに含まれており、JSON データを解析および生成するための基本関数を提供します。JSON 文字列の解析と生成のみが可能ですが、Java オブジェクト間の変換はできません。

各パーサーには、それぞれの特徴と適用可能なシナリオがあります。プロジェクトの要件や個人の好みに応じて、適切な JSON パーサーを選択できます。


springboot 統合 JSON 補足

springboot フレームワークでは、オブジェクトや json を手動で解析、生成、変換する必要はありません。springboot は、アノテーションを介して統合するのに役立ちました。

次に、@RestController アノテーションが付けられたクラスに @ResponseBody アノテーションを追加し、特定のメソッドで @ResponseBody アノテーションを使用して、Spring に返回的Java对象JSON への自動変換を明示的に指示します。

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
//@ResponseBody
public class MyController {
    
    

    @GetMapping("/example")
    @ResponseBody
    public MyObject getExample() {
    
    
        // 返回的MyObject会自动转换为JSON
        return new MyObject();
    }
}

以下は、メソッドのパラメーターに @RequestBody アノテーションを使用することで、Spring Boot が接收到的JSON数据それを自動的に Person オブジェクトに変換し、メソッドのパラメーターとして渡します。

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {
    
    

    @PostMapping("/person")
    public Person createPerson(@RequestBody Person person) {
    
    
        // 在这里可以对person对象进行业务逻辑处理
        return person;
    }
}

おすすめ

転載: blog.csdn.net/qq_45973897/article/details/131190179