Java 将一个字段输出到多个json字段
有没有一种方法可以使用Jackson注释将have给定的字段序列化为2个json字段 与将多个json字段反序列化为一个字段的Java 将一个字段输出到多个json字段,java,json,serialization,jackson,Java,Json,Serialization,Jackson,有没有一种方法可以使用Jackson注释将have给定的字段序列化为2个json字段 与将多个json字段反序列化为一个字段的@jsonaas相反 乙二醇 序列化为: { "field1" : "xyz", "field2" : "xyz" } 是否有类似于@SomeAnnotation的注释 -- 注意:这不是一个“应该”我做这件事(这是一个强制要求),而是一个“如何”我做这件事(优雅)。一个简单的解决方案可能是为field1添加两个getter: class Foo {
@jsonaas
相反
乙二醇
序列化为:
{
"field1" : "xyz",
"field2" : "xyz"
}
是否有类似于@SomeAnnotation
的注释
--
注意:这不是一个“应该”我做这件事(这是一个强制要求),而是一个“如何”我做这件事(优雅)。一个简单的解决方案可能是为
field1
添加两个getter:
class Foo {
private String field1 = "blah";
public String getField1() {
return field1;
}
public String getField2() {
return field1;
}
}
Jackson将按照javabeans命名约定为每个getter创建一个字段:
{"field1":"blah","field2":"blah"}
另一种选择是@com.fasterxml.jackson.annotation.JsonAnyGetter
,它可以为您提供更大的灵活性:
class Foo {
private String field1 = "blah";
public String getField1() {
return field1;
}
@JsonAnyGetter
public Map<String, Object> getAny() {
Map<String, Object> m = new HashMap<>();
m.put("field2", this.field1);
m.put("field3", this.field1.toUpperCase());
return m;
}
}
不是您正在寻找的基于注释的解决方案。。。但是您可以使用两个getter:
getField1()
和getField2()
都返回field1
@ernest\k将您的想法作为答案。我有一种感觉,它会被接受。我在想,只要尝试com.fasterxml.jackson.databind.annotation.JsonAppend
,就可以找到一个简单的解决方案。但似乎对于属性,可能需要做更多的工作(我认为只有在这种情况经常发生时才值得),我使用的是lombok,所以只有字段,但为了简单起见,包装器getter获胜。
class Foo {
private String field1 = "blah";
public String getField1() {
return field1;
}
@JsonAnyGetter
public Map<String, Object> getAny() {
Map<String, Object> m = new HashMap<>();
m.put("field2", this.field1);
m.put("field3", this.field1.toUpperCase());
return m;
}
}
{"field1":"blah","field3":"BLAH","field2":"blah"}