Joh*_*apy 4 java json list wrapper jackson
使用Jackson库序列化字符串列表时,它正确提供了一个JSON数组字符串:
<mapper>.writeValue(System.out, Arrays.asList("a", "b", "c"));
[ "a", "b", "c" ]
Run Code Online (Sandbox Code Playgroud)
但是,字符串由我们的代码中的类包装/包含:
public static class StringWrapper {
protected final String s;
public String getS() {
return s;
}
public StringWrapper(final String s) {
this.s = s;
}
}
Run Code Online (Sandbox Code Playgroud)
在序列化"字符串包装器"列表时,我希望获得与上面相同的输出.现在我得到:
<mapper>.writeValue(System.out, Arrays.asList(new StringWrapper("a"), new StringWrapper("b"), new StringWrapper("c")));
[ {
"s" : "a"
}, {
"s" : "b"
}, {
"s" : "c"
} ]
Run Code Online (Sandbox Code Playgroud)
这样做最方便的方法是什么?如果可能,反序列化也应该起作用.
你可以使用@JsonValue你的单个吸气剂
@JsonValue
public String getS() {
return s;
}
Run Code Online (Sandbox Code Playgroud)
来自javadoc,
类似于javax.xml.bind.annotation.XmlValue的标记注释,表示带注释的"getter"方法的结果(这意味着签名必须是getter的结果;非void返回类型,没有args)将被用作单个要为实例序列化的值.通常,value将是一个简单的标量类型(String或Number),但它可以是任何可序列化的类型(Collection,Map或Bean).