Java 将JSON转换为POJO

Java 将JSON转换为POJO,java,json,jersey,Java,Json,Jersey,我将Jersey用于REST WS,我的响应是JSON 我想将此响应转换为POJO。如何进行转换?要在Java和JSON之间进行转换,有很多API可供选择 您可以“手动”逐步遍历JSON组件并提取值来填充Java对象,也可以使用JSON到Java绑定API来处理许多低级映射问题 就是这样一个API。它易于使用,并提供了可能是最完整的API功能集,以解决常见问题和定制。StackOverflow.com提供了许多如何使用它的示例。作为一个选项,您可以选择。您还可以使用JaxB绑定,它将为您处理与之

我将Jersey用于REST WS,我的响应是JSON


我想将此响应转换为POJO。如何进行转换?

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

您可以“手动”逐步遍历JSON组件并提取值来填充Java对象,也可以使用JSON到Java绑定API来处理许多低级映射问题


就是这样一个API。它易于使用,并提供了可能是最完整的API功能集,以解决常见问题和定制。StackOverflow.com提供了许多如何使用它的示例。

作为一个选项,您可以选择。

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

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

}

泽西岛服务

 @GET
 @Produces (MediaType.APPLICATION_JSON)
 public User getUser ()
 {
     User user = new User ();
     user.setName ("John Doe");
     return user;
 }
这将转换用户POJO对象并返回它 具有此示例JSON中指定的媒体类型。你甚至可以回来 它使用一个响应对象。例如:

  @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(成功)的响应对象以及用户JSON 对象[注意]此方法是首选方法,因为它提供调用
您的web服务有关事务或服务状态的信息

我们还可以在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>

我也在寻找同样的方法,因为其他人要求您为变量添加注释或编写/生成getter和setter方法,所以我编写了自己的编解码器来使用反射处理JSONPOJO转换


请参见此处:

我正在这样做:WebResource=client.resource(urlStr);accept(MediaType.APPLICATION_JSON);GenericType GenericType=新的GenericType(){};列表响应=null;尝试{response=resource.get(genericType);}catch(UniformInterfaceException ue){ClientResponse-ClientResponse=ue.getResponse();}但我遇到了以下错误:GRAVE:Java类Java.util.List的消息体读取器和Java类型。。。未找到我建议在新问题中发布此消息。有关错误消息、导致错误的特定代码行以及出错时相关组件的值的信息越多越好。Did:)
Gson gson = new GsonBuilder().create();
String payloadStr = gson.toJson(data.getMerchant().getStakeholder_list());