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

Mar*_*iah 50 java json pojo

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

bru*_*azi 45

是的,有json.org.请查看http://www.json.org/java/index.html

[编辑]想象一下,你有一个像这样的简单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; }

}
Run Code Online (Sandbox Code Playgroud)

因此,要将其转换为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 );
    }

}
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.

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

Maven的:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.6.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

以及一个链接(下方),以找到最新/最好的版本:

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

  • 我喜欢这种方法 - 不幸的是它对我不起作用.我收到错误消息:"构造函数JSONObject(Person)未定义"..任何想法为什么?我在一些Android代码中调用它..它是普通的Java.谢谢 (7认同)

小智 18

我们还可以在你的pom文件中使用下面给出的依赖项和插件 - 我使用了maven.通过使用这些,您可以根据您的JSON模式生成POJO,然后使用下面给出的代码通过指定为参数的src对象将请求JSON对象填充到gson.toJson(Object src),反之亦然.看下面的代码:

Gson gson = new GsonBuilder().create();
String payloadStr = gson.toJson(data.getMerchant().getStakeholder_list());

Gson gson2 = new Gson();
Error expectederr = gson2.fromJson(payloadStr, Error.class);
Run Code Online (Sandbox Code Playgroud)

和Maven设置:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>1.7.1</version>
</dependency>

<plugin>
    <groupId>com.googlecode.jsonschema2pojo</groupId>
    <artifactId>jsonschema2pojo-maven-plugin</artifactId>
    <version>0.3.7</version>
    <configuration>
        <sourceDirectory>${basedir}/src/main/resources/schema</sourceDirectory>
        <targetPackage>com.example.types</targetPackage>
    </configuration>
    <executions>
        <execution>
            <phase>generate-sources</phase>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)


Bil*_*uly 17

如果您了解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);
Run Code Online (Sandbox Code Playgroud)

将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);
Run Code Online (Sandbox Code Playgroud)

杰克逊2依赖:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.6.3</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

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