繁体   English   中英

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

[英]Json - replace field name in generic Dto with associated type name

我有通用的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"..}

我想知道是否有一种方法可以使用批注或其他实用程序来实现。

认为,这与您所需的方式不同,相同的原理是在属性或方法(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字符串(例如E Foo

{"id":"100","name":"john","e":{"type":"Foo","state1":"value1"...}}

现在,它在通用数据传输对象的基础类型上是独特的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM