Java将JSON的一部分反序列化为对象,其余部分反序列化为JsonObject
我到处都在寻找如何将JSON的一部分反序列化为对象,其余部分反序列化为JsonObject 例如:Java将JSON的一部分反序列化为对象,其余部分反序列化为JsonObject,java,json,spring-mvc,gson,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; //
{
"id" : "123",
"message" : {"subject" : "test sub" , "body" : "test body"}
}
我想将这个JSON反序列化到这个类中:
public class className {
private String id;
private transient JsonObject message;
// getters and setters
}
问题是,在反序列化之后,我在“message”中得到空对象{}
有人知道吗
======================================================
编辑:
还有一点信息,我正在使用SpringMVC,JSON通过POST消息发送到我的控制器中
控制器功能如下所示:
public @ResponseBody String publish(@RequestBody final className input, final HttpServletRequest request,
final HttpServletResponse response) {
//input.message = {}
}
这是因为Spring试图用Jackson库解析您的对象,而您的对象持有Gson对象(不能用Jackson解析) 请参阅
@配置
@EnableWebMvc
公共类应用程序扩展WebMVCConfigureAdapter{
@凌驾
public void configureMessageConverters(列表>转换器){
GsonHttpMessageConverter GsonHttpMessageConverter=新的GsonHttpMessageConverter();
添加(gsonHttpMessageConverter);
}
}
对我来说很好。请发一封邮件。这对我来说很好。您确定使用的是Gson中正确的JsonObject
类型吗?请提供一个。我正在使用com.google.gson.JsonObject
。我使用POST请求将输入输入输入到REST控制器中,并在主体中使用JSON。控制器如下所示:公共字符串sendMessage(@RequestBody final className input,…)代码>我在函数入口后立即使用断点停止,并检查我的输入,ID在那里,但消息是emptySo Spring MVC,可能涉及Jackson。请在你的问题中提供这些细节。杰克逊在课堂上吗?谢谢,我已经编辑了我的问题。谢谢你的回答。我使用的是Spring Boot,所以我在appConfig中添加了:@Bean public HttpMessageConverters customConverters()
,在我的应用程序中添加了@EnableAutoConfiguration(exclude={JacksonAutoConfiguration.class})
,但现在“message”为空。甚至不是“{}”。你还有别的想法吗?好的!我得到了它。空值的问题是因为消息字段中有transient关键字。我已经删除了瞬态,现在它的工作!非常感谢你!
@Configuration
@EnableWebMvc
public class Application extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(List<HttpMessageConverter < ? >> converters) {
GsonHttpMessageConverter gsonHttpMessageConverter = new GsonHttpMessageConverter();
converters.add(gsonHttpMessageConverter);
}
}