Json - 将泛型Dto中的字段名称替换为关联的类型名称

时间:2014-06-17 03:38:15

标签: java json annotations

我在DTO课上使用泛型进行数据传输

public class CreateDto<E> {
    private String id;
    private String name;
    private E e;
}

我的问题是在使用ObjectMapper将对象转换为json时,我总是将json字符串作为

{id : 1, name : 2, e : {"state1":"value1" ...} };

我希望将e替换为特定的内容,例如CreateDto<Foo>我想要它like a foo:{"state1":"value1" ..},当它是CreateDto时,它应该是bar:{"state2":"value2"..}

我想知道是否有办法使用注释或其他一些工具来获取它。

1 个答案:

答案 0 :(得分:0)

认为,这与您的要求不同,同样的原则是在属性或方法(getter或setter)级别使用@JsonTypeInfo注释。

以下示例(在属性级别);

public class CreateDto<E> {
    private String id;
    private String name;
    @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = As.PROPERTY, property = "type")
    private E e;
    ...
}

将生成json字符串(例如Foo的{​​{1}})

E

现在,它与通用数据传输对象的基础类型截然不同。