在springboot反序列化器中包含带有jackson的根对象
Posted
技术标签:
【中文标题】在springboot反序列化器中包含带有jackson的根对象【英文标题】:Include root object with jackson in springboot deserializer 【发布时间】:2015-10-26 00:17:07 【问题描述】:如何在带有 spring-boot 的 jackson 反序列化器中包含 objeto 根目录?
我尝试放入 application.properties
spring.jackson.deserialization.UNWRAP_ROOT_VALUE=true
我尝试使用一个配置器
@Configuration
public class JacksonConfig
@Bean
public Jackson2ObjectMapperBuilder jacksonBuilder()
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
builder.featuresToEnable(DeserializationFeature.UNWRAP_ROOT_VALUE);
builder.indentOutput(true).dateFormat(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"));
builder.indentOutput(true);
return builder;
我把注释放在我的班级里
@JsonRootName("contato")
public class TbContato extends EntityBase
但不工作我得到了这个回报:
"cdContato": 12,
"dtContato": "03/08/2015 16:04:43",
"cdUsuario": null,
"nmParte": "Fabio Ebner",
"nmEmailParte": "fabioebner@gmail.com",
"nmAssunto": "Assuntttoooo",
"dsMensagem": "mensagem nessa porra aqui",
"dtResposta": null,
"dsResposta": null,
"cdUsuarioResposta": null,
"nmUsuarioResposta": null
没有根。
【问题讨论】:
@OP 你有没有解决过这个问题?我目前也在苦苦挣扎。 【参考方案1】:那是因为您是在序列化而不是反序列化。尝试使用
spring.jackson.serialization.WRAP_ROOT_VALUE=true
【讨论】:
【参考方案2】:另一种选择是使用参数化的通用根包装类,如下所示:
package com.example.wrappedResponse.model;
public class ResponseWrapper<T>
private T contato;
public ResponseWrapper(T contato)
this.contato = contato;
public T getContato()
return response;
public void setContato(T contato)
this.contato = contato;
然后在控制器中用该类型包装实体。
package com.example.wrappedResponse.controller;
import com.example.wrappedResponse.model.EntityBase;
import com.example.wrappedResponse.model.ResponseWrapper;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.GetMapping;
@RestController
class EntityWrappingController
@GetMapping("/get/wrapped/base/entity")
public ResponseWrapper<EntityBase> status()
EntityBase entityToWrap;
// get you entity from application …
return new ResponseWrapper<>(entityToWrap);
如果您想用同一个键包含多个响应包装,这是有道理的。
【讨论】:
以上是关于在springboot反序列化器中包含带有jackson的根对象的主要内容,如果未能解决你的问题,请参考以下文章
在 Spring Boot + Spring Data Rest 中反序列化时忽略带有 @JsonProperty 的字段
Spring Boot:使用自定义序列化器 + 反序列化器消费和生成 XML