我有以下的结构.我知道这看起来很奇怪,但我用这个例子模拟我们的代码.
public static class StringWrapper {
protected final String s;
@JsonValue
public String getS() {
return s;
}
public StringWrapper(final String s) {
this.s = s;
}
}
public static class StringWrapperOuter {
protected final StringWrapper s;
@JsonValue
public StringWrapper getS() {
return s;
}
public StringWrapperOuter(final StringWrapper s) {
this.s = s;
}
}
public static class POJO {
protected final List<StringWrapperOuter> data;
public List<StringWrapperOuter> getData() {
return data;
}
public POJO(final List<StringWrapperOuter> data) {
this.data = data;
} …Run Code Online (Sandbox Code Playgroud) 使用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)
这样做最方便的方法是什么?如果可能,反序列化也应该起作用.