Java JSON 库

JavaJavaBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它易于阅读和编写,广泛用于客户端与服务器之间的数据交换。在本实验中,你将学习如何使用流行的 Java JSON 库,包括 Jackson、Gson、Genson 和 Json-io,将对象序列化和反序列化为 JSON 格式。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("`Java`")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["`Object-Oriented and Advanced Concepts`"]) java(("`Java`")) -.-> java/FileandIOManagementGroup(["`File and I/O Management`"]) java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("`Classes/Objects`") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/serialization("`Serialization`") java/FileandIOManagementGroup -.-> java/io("`IO`") subgraph Lab Skills java/classes_objects -.-> lab-117768{{"`Java JSON 库`"}} java/serialization -.-> lab-117768{{"`Java JSON 库`"}} java/io -.-> lab-117768{{"`Java JSON 库`"}} end

设置项目

  1. 打开终端,通过运行 cd ~/project 导航到项目目录。
  2. 在终端中运行 touch JsonLab.java 命令,为本实验创建一个新的 Java 文件,并粘贴以下代码:
import java.io.IOException;

public class JsonLab {
    public static void main(String[] args) throws IOException {
        ClassA classAObj = new ClassA("Demo", 20.0); // 创建对象以便稍后序列化和反序列化
    }

    // 在此处添加 ClassA 类
}

使用 Jackson 库

  1. 要使用 Jackson,我们需要在 pom.xml 文件中添加 Jackson 的 Maven 依赖:
<dependencies>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson.version}</version>
    </dependency>
</dependencies>
  1. 接下来,我们需要使用 ObjectMapper 类将对象序列化和反序列化为 JSON 字符串,如下所示:
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonLab {
  public static void main(String[] args) throws IOException {
    ObjectMapper objMapper = new ObjectMapper();
    ClassA classAObj = new ClassA("Demo", 20.0);

    // 序列化
    String jsonString = objMapper.writeValueAsString(classAObj);
    System.out.println("Serialized String: " + jsonString);

    // 反序列化
    ClassA objFromStr = objMapper.readValue(jsonString, ClassA.class);
    System.out.print("Deserialized Object: " + objFromStr.getField1() + " " + objFromStr.getField2());
  }
}

使用 Gson 库

  1. 要使用 Gson,我们需要在 pom.xml 文件中添加 Gson 的 Maven 依赖:
<dependencies>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>${gson.version}</version>
    </dependency>
</dependencies>
  1. 接下来,我们需要使用 Gson 对象对对象进行序列化和反序列化,如下所示:
import com.google.gson.Gson;

public class JsonLab {
  public static void main(String[] args) throws IOException {
    Gson gson = new Gson();
    ClassA obj = new ClassA("Demo", 20.0);

    // 序列化
    String jsonStrFromObj = gson.toJson(obj);
    System.out.println("Serialized String: " + jsonStrFromObj);

    // 反序列化
    ClassA objFromJsonStr = gson.fromJson(jsonStrFromObj, ClassA.class);
    System.out.print("Deserialized Object: " + objFromJsonStr.getField1() + " " + objFromJsonStr.getField2());
  }
}

使用 Genson 库

  1. 要使用 Genson,我们需要在 pom.xml 文件中添加 Genson 的 Maven 依赖:
<dependencies>
    <dependency>
        <groupId>com.owlike</groupId>
        <artifactId>genson</artifactId>
        <version>${genson.version}</version>
    </dependency>
</dependencies>
  1. 接下来,我们需要使用 Genson 对象对对象进行序列化和反序列化,如下所示:
import com.owlike.genson.Genson;

public class JsonLab {
  public static void main(String[] args) throws IOException {
    Genson genson = new Genson();
    ClassA obj = new ClassA("Demo", 20.0);

    // 序列化
    String jsonStrFromObj = genson.serialize(obj);
    System.out.println("Serialized String: " + jsonStrFromObj);

    // 反序列化
    ClassA objFromJsonStr = genson.deserialize(jsonStrFromObj, ClassA.class);
    System.out.print("Deserialized Object: " + objFromJsonStr.getField1() + " " + objFromJsonStr.getField2());
  }
}

使用 Json-io 库

  1. 要使用 Json-io 库,我们需要在 pom.xml 文件中添加 Json-io 的 Maven 依赖:
<dependencies>
  <dependency>
    <groupId>com.cedarsoftware</groupId>
    <artifactId>json-io</artifactId>
    <version>${json-io.version}</version>
  </dependency>
</dependencies>
  1. 接下来,我们需要使用 JsonWriterJsonReader 对对象进行序列化和反序列化,如下所示:
import com.cedarsoftware.util.io.JsonReader;
import com.cedarsoftware.util.io.JsonWriter;

public class JsonLab {
  public static void main(String[] args) throws IOException {
    ClassA obj = new ClassA("Demo", 20.0);

    // 序列化
    String jsonStrFromObj = JsonWriter.objectToJson(obj);
    System.out.println("Serialized String: " + jsonStrFromObj);

    // 反序列化
    ClassA objFromJsonStr = (ClassA) JsonReader.jsonToJava(jsonStrFromObj);
    System.out.print("Deserialized Object: " + objFromJsonStr.getField1() + " " + objFromJsonStr.getField2());
  }
}

总结

在本实验中,你学习了如何使用多种 Java JSON 库将对象转换为 JSON 格式,以及如何将 JSON 转换回对象。我们学习了如何使用 Jackson、Gson、Genson 和 Json-io 库对对象进行序列化和反序列化操作。

您可能感兴趣的其他 Java 教程