如何将POJO转换为JSON,反之亦然?

2022-08-31 14:34:32

我想知道是否有任何Java API可用于将POJO对象转换为JSON对象,反之亦然。


答案 1

看看 https://www.json.org

想象一下,你有一个简单的Java类,如下所示:

public class Person {

    private String name;
    private Integer age;

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

    public Integer getAge() { return this.age; }
    public void setAge( Integer age ) { this.age = age; }

}

因此,要将其转换为 JSON 对象,非常简单。喜欢这个:

import org.json.JSONObject;

public class JsonTest {

    public static void main( String[] args ) {
        Person person = new Person();
        person.setName( "Person Name" );
        person.setAge( 333 );
        
        JSONObject jsonObj = new JSONObject( person );
        System.out.println( jsonObj );
    }

}

这里有另一个例子,在这种情况下使用杰克逊:https://brunozambiazi.wordpress.com/2015/08/15/working-with-json-in-java/

专家:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.6.1</version>
</dependency>

以及一个链接(如下)以查找最新/最佳版本:

https://search.maven.org/classic/#search%7Cga%7C1%7Cg%3A%22com.fasterxml.jackson.core%22%20AND%20a%3A%22jackson-databind%22


答案 2

如果您知道Jackson 2那么 mkyong.com 上有一个很棒的教程,介绍如何将Java对象转换为JSON,反之亦然。以下代码段取自该教程。

将 Java 对象转换为 JSON,writeValue(...)

ObjectMapper mapper = new ObjectMapper();
Staff obj = new Staff();

//Object to JSON in file
mapper.writeValue(new File("c:\\file.json"), obj);

//Object to JSON in String
String jsonInString = mapper.writeValueAsString(obj);

将 JSON 转换为 Java 对象,readValue(...)

ObjectMapper mapper = new ObjectMapper();
String jsonInString = "{'name' : 'mkyong'}";

//JSON from file to Object
Staff obj = mapper.readValue(new File("c:\\file.json"), Staff.class);

//JSON from URL to Object
Staff obj = mapper.readValue(new URL("http://mkyong.com/api/staff.json"), Staff.class);

//JSON from String to Object
Staff obj = mapper.readValue(jsonInString, Staff.class);

杰克逊 2 依赖关系:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.6.3</version>
</dependency>

有关完整教程,请转到上面给出的链接。