Spring Boot Jackson 通用数据类型序列化
Posted
技术标签:
【中文标题】Spring Boot Jackson 通用数据类型序列化【英文标题】:Springboot Jackson Generic data type serialize 【发布时间】:2018-06-15 04:43:51 【问题描述】:我有课
public class ResponseWrapper<T>
private T mObject;
/**
* @return the mObject
*/
public T getmObject()
return mObject;
/**
* @param mObject the mObject to set
*/
public void setData(T mObject)
this.mObject = mObject;
T
是我设置的泛型类型对象。所以我会像
ResponseWrapper<Dog> responseWrapper = new ResponseWrapper();
responseWrapper.setData(new Dog())
在 Dog 类中,我使用 @JsonRootName("dog")
对其进行了注释
我的问题是,我希望 JSON 输出应该类似于 ResponseWrapper
"dog":
"dogId": 19
但我的 JSON 就像
"mObject":
"dogId": 19
它采用变量名的名称。我希望杰克逊采用 @JsonRootName 值而不是变量名。但我想我在这里遗漏了一些东西。
【问题讨论】:
你有UNWRAP_ROOT_VALUE set
吗?
我有这个设置 spring.jackson.deserialization.unwrap-root-value=true。
【参考方案1】:
使用@JsonPoperty
:
public class ResponseWrapper<T>
@JsonProperty("dog")
private T mObject;
/**
* @return the mObject
*/
public T getmObject()
return mObject;
/**
* @param mObject the mObject to set
*/
public void setData(T mObject)
this.mObject = mObject;
【讨论】:
如果我把@JsonProperty 我只会得到“狗”作为根节点。以上是关于Spring Boot Jackson 通用数据类型序列化的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 未使用 Jackson Kotlin 插件
Spring boot Jackson Json Serialization for List 实现类(PagedList)
Spring Boot Jackson ResponseEntity 找不到类的序列化程序
使用 Gson/Jackson 和 Spring Boot 重新创建没有字段属性的 DTO 类,而不是使其为空
Spring boot + Jackson + LocalDateTime:日期解析不正确
Jackson Object Mapper 在提供扩展配置时不工作,但在 Spring Boot 中提供类级别/字段级别注释时工作