Java将JSON的一部分反序列化为对象,其余部分反序列化为JsonObject

时间:2017-03-22 18:33:01

标签: java json spring-mvc gson

我到处寻找如何将部分JSON反序列化为对象,其余部分反序列化为JsonObject。

例如:

{
  "id" : "123",
  "message" : {"subject" : "test sub" , "body" : "test body"}
}

我想将此JSON反序列化为此类:

public class className {
    private String id;
    private transient JsonObject message;

    // getters and setters
}

问题是在反序列化后我在“message”中得到空对象{}

有人对此有任何想法吗?

=============================================== =======

编辑:

更多信息,我使用Spring MVC,JSON正通过POST消息发送到我的控制器。

控制器功能如下所示:

public @ResponseBody String publish(@RequestBody final className input, final HttpServletRequest request,
        final HttpServletResponse response) {
    //input.message = {}
}

1 个答案:

答案 0 :(得分:3)

这是因为Spring试图用Jackson库解析你的对象,而你的对象持有Gson对象(不能用Jackson解析)。

请参阅Configure Gson in Spring

@Configuration
@EnableWebMvc
public class Application extends WebMvcConfigurerAdapter {

    @Override
    public void configureMessageConverters(List<HttpMessageConverter < ? >> converters) {
        GsonHttpMessageConverter gsonHttpMessageConverter = new GsonHttpMessageConverter();
        converters.add(gsonHttpMessageConverter);
    }
}