【问题标题】:Springboot Jackson Generic data type serializeSpring Boot Jackson 通用数据类型序列化
【发布时间】: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。

标签: spring-boot serialization jackson


【解决方案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 我只会得到“狗”作为根节点。
猜你喜欢
  • 2017-09-09
  • 1970-01-01
  • 2023-01-20
  • 2021-03-31
  • 2021-03-30
  • 2019-04-03
  • 2020-07-26
  • 2018-11-17
  • 2019-08-05
相关资源
最近更新 更多