将JSON转换为POJO

时间:2011-06-21 14:07:18

标签: java json jersey

我正在使用Jersey for REST WS,我将我的响应作为JSON。 我想将此响应转换为POJO。怎么做 ? 日Thnx

5 个答案:

答案 0 :(得分:10)

要在Java和JSON之间进行转换,有许多API可供选择。

您可以“手动”逐步执行JSON组件并提取值以填充Java对象,或者您可以使用JSON-to-Java绑定API来处理许多低级映射问题。

Jackson就是这样的API。它易于使用,并提供最全面的API功能,以解决常见问题和自定义。 StackOverflow.com有许多如何使用它的例子。

答案 1 :(得分:1)

作为选项,您可以查看JSON Simple

答案 2 :(得分:0)

您还可以使用JaxB绑定来处理与您的转换。它是Java SE的一部分,因此不需要下载jar。但是,您需要编写一个包含json对象将返回的所有属性的pojo类以及用于评估它们的访问器方法。然后,您将在该类上添加一个XmlRootElement注释,这将使jaxb能够在必要时转换为json和从json转换。例如:

POJO

 @XmlRootElement
public class User
{
    private String name;

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

   public String getName ()
   {
       return name;
   }

}

泽西岛服务

 @GET
 @Produces (MediaType.APPLICATION_JSON)
 public User getUser ()
 {
     User user = new User ();
     user.setName ("John Doe");
     return user;
 }

这将转换用户POJO对象并将其返回 具有此示例JSON中指定的媒体类型。你甚至可以回来 它与Response对象。例如:

  @GET
 @Produces (MediaType.APPLICATION_JSON)
 public Response getUser ()
 {
     User user = new User ();
     user.setName ("John Doe");
     return Response.status (Status.OK).entity (user).build ();
 } 

这将返回一个代码为200(Success)的Response对象以及User JSON 宾语。 [注意]这种方法是首选,因为它提供了调用的用户 您的有关交易或服务状态的Web服务信息

答案 3 :(得分:0)

我们还可以在你的pom文件中使用下面给出的依赖项和插件。

<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>

使用这些可以根据您的JSON Schema生成POJO,然后利用下面给出的代码通过指定为gson.toJson(Object src)的参数的src对象填充请求JSON对象:

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

答案 4 :(得分:0)

正在寻找同样的东西,因为其他人要求你为变量添加注释或编写/生成getter和setter方法,我编写了自己的编解码器来处理使用反射的JSON&lt; - &gt; POJO转换。

见这里:http://homac.cakelab.org/projects/org.cakelab.json