我正在使用Jersey for REST WS,我将我的响应作为JSON。 我想将此响应转换为POJO。怎么做 ? 日Thnx
答案 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转换。