Java JSON 库

原文:https://www.studytonight.com/java-examples/java-json-libraries

JSON 代表 JavaScript 对象符号,是一种流行的文件格式,用于存储和传输数据对象。有很多外部库可以让我们在 Java 中使用 JSON。

最受欢迎的有 Jaskson、Gson、Genson 和 json-io。

在本教程中,我们将学习这些库的基础知识。我们将看到一些例子来理解如何使用这些库将对象序列化和反序列化为 JSON。

我们将在序列化和反序列化示例中使用以下类。

class ClassA
{
    private String field1;
    private Double field2;

    //Constructors
    ClassA()
    {} 

    ClassA(String field1, Double field2)
    {
        this.field1 = field1;
        this.field2 = field2;
    }       
    //getters and setters
    public String getField1() {
        return field1;
    }
    public void setField1(String field1) {
        this.field1 = field1;
    }
    public Double getField2() {
        return field2;
    }
    public void setField2(Double field2) {
        this.field2 = field2;
    }
}

JavaJaskson

Jackson 是一个流行的 Java JSON 处理库。这个库由三个核心包组成——流、数据绑定和注释。要在您的项目中使用这一点,请将 Jaskson 的以下 Maven 依赖项添加到 pom.xml 文件中。

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>${jackson.version}</version>
</dependency>

Jackson 提供了ObjectMapper类将对象序列化为 JSON 字符串,并将 JSON 字符串反序列化为对象。

这个类的 writeValueAsString() 方法可以将对象序列化为 JSON 字符串。类似地, readValue() 方法将字符串反序列化回对象。下面的代码演示了这一点。

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

        ObjectMapper objMapper = new ObjectMapper();
        String jsonString = objMapper.writeValueAsString(classAObj);//Generating JSON String from object
        System.out.println("String: " + jsonString);

        ClassA objFromStr = objMapper.readValue(jsonString, ClassA.class);//Getting object from the JSON string
        System.out.print("Object: " + objFromStr.getField1() + " " + objFromStr.getField2());
    }
}

字符串:{“field 1”:“Demo”,“field 2”:20.0 } 对象:Demo 20.0

Java json

Gson 是谷歌开发的开源库。Gson 易于使用和理解。与其他一些库不同,Gson 为 Java 中的泛型提供了广泛的支持。Gson 的 Maven 依赖关系如下所示。您可以使用这些到项目的 pom.xml 文件中。

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>${gson.version}</version>
</dependency>

我们可以使用 toJson()fromJson() 方法对对象进行序列化和反序列化。下面的代码演示了这一点。

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

        Gson gson = new Gson();
        String jsonStrFromObj = gson.toJson(obj);//Object to JSON String
        System.out.println("String: " + jsonStrFromObj);

        ClassA objFromJsonStr = gson.fromJson(jsonStrFromObj, ClassA.class);//JSON String to Object
        System.out.print("Object: " + objFromJsonStr.getField1() + " " + objFromJsonStr.getField2());
    }
}

字符串:{“field 1”:“Demo”,“field 2”:20.0 } 对象:Demo 20.0

Java genson(Java genson)

Genson 库提供了简单的序列化()反序列化()方法,用于对象和 JSON 之间的 conJavversion。Genson 库还为泛型和多态类型以及不提供默认构造器的不可变对象提供了完整的支持。我们可以使用下面的 Maven 依赖项或者从官方网站下载 Jenson jar 文件。

<dependency>
    <groupId>com.owlike</groupId>
    <artifactId>genson</artifactId>
    <version>${genson.version}</version>
</dependency>

下面的代码演示了 serialize()和 serialize()方法的工作原理。

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

        Genson genson = new Genson();
        String jsonStrFromObj = genson.serialize(obj);//Serializing object to JSON String
        System.out.println("String: " + jsonStrFromObj);

        ClassA objFromJsonStr = genson.deserialize(jsonStrFromObj, ClassA.class);//Deserializing JSON String to Object
        System.out.print("Object: " + objFromJsonStr.getField1() + " " + objFromJsonStr.getField2());
    }
}

字符串:{“field 1”:“Demo”,“field 2”:20.0 } 对象:Demo 20.0

Java Json-io

Json-io 是另一个流行的用于 Json 处理的库。它包含两个主要的类 JsonReader 和 JsonWriter。

我们可以使用 JsonWriter 的 objectToJson() 方法将一个对象序列化为 Json 字符串。同样,我们可以使用 JsonReader 类的 jsonToJava() 方法将 JSON 字符串反序列化为对象。

请注意,类型信息也包含在 JSON 字符串中,以告诉 JsonReader 要实例化哪个类。反序列化时,我们还需要显式强制转换。

马文依赖:

<dependency>
    <groupId>com.cedarsoftware</groupId>
    <artifactId>json-io</artifactId>
    <version>${json-io.version}</version>
</dependency>

下面的代码演示了 JsonWriter 和 JsonReader 的工作原理。

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

        String jsonStrFromObj = JsonWriter.objectToJson(obj);//Object to JSON String
        System.out.println("String: " + jsonStrFromObj);

        ClassA objFromJsonStr = (ClassA) JsonReader.jsonToJava(jsonStrFromObj);//JSON String to Object
        System.out.print("Object: " + objFromJsonStr.getField1() + " " + objFromJsonStr.getField2());
    }
}

字符串:{“@ type”:“class a”、“field 1”:“Demo”、“field 2”:20.0 } 对象:Demo 20.0

摘要

JSON 是一种广泛使用的对象格式。有很多外部库可以用来处理 Java 中的 JSON。在本教程中,我们学习了 Jaskson 库、Gson 库、Genson 库和 Json-io 库的基础知识。我们还看到了所有这些库的序列化和反序列化的例子。