【发布时间】:2021-08-24 15:02:00
【问题描述】:
我正在使用 jackson-databind 版本 2.12.3 来序列化应该返回的对象的返回,如下所示:
{
"field1":"value1",
"field2":"value2",
"links":{
"field":{
"href":"/link"
},
"test":{
"href":"/test"
}
}
}
我的课程如下:
public class HrefType {
private String href = null;
...
}
public class Link extends HashMap<String, HrefType> {
private HrefType field = null;
...
}
public class MyObject {
private String field1 = null;
private String field2 = null;
private Link links = null;
...
}
返回的是 myObject:
MyObject myObject = new MyObject();
myObject.setField1("value1");
myObject.setField2("value2");
Link link = new Link();
link.setField(new HrefType().href("/link"));
link.put("test",new HrefType().href("/test"));
myObject.setLinks(link);
但是对于默认的 ObjectMapper,“link.setField”被忽略,返回的 json 是:
{
"field1":"value1",
"field2":"value2",
"links":{
"test":{
"href":"/test"
}
}
}
我尝试使用 JsonSerializer 进行一些测试,但无法为所有扩展 HashMap 的类做一些通用的事情(这些类是从 BerlinGroup 的 PSD2 YAML 生成的,所以我不想更改生成的类)。
是否有通用的方法,或者我应该为每个扩展 HashMap 的类创建一个序列化类?
【问题讨论】:
-
Link 类的“字段”属性是否有 getter(>getter 使私有字段可序列化/可反序列化)?
-
@TacheDeChoco 是:@JsonProperty("field") public HrefType getField() { return field; }
标签: java fasterxml jsonserializer