我想序列化一个对象,以便根据字段的类型对其中一个字段进行不同的命名。例如:
public class Response {
private Status status;
private String error;
private Object data;
[ getters, setters ]
}
在这里,我希望将字段 data
序列化为 data.getClass.getName()
之类的东西,而不是总是有一个名为 data< 的字段
根据情况包含不同的类型。
我如何使用 Jackson 实现这样的技巧?
最佳答案
我有一个使用 @JsonAnyGetter
注释的更简单的解决方案,它就像一个魅力。
import java.util.Collections;
import java.util.Map;
public class Response {
private Status status;
private String error;
@JsonIgnore
private Object data;
[getters, setters]
@JsonAnyGetter
public Map<String, Object> any() {
//add the custom name here
//use full HashMap if you need more than one property
return Collections.singletonMap(data.getClass().getName(), data);
}
}
不需要包装器,不需要自定义序列化器。
关于java - Jackson 动态属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12134231/