使用Jackson库序列化字符串列表时,它会正确提供一个JSON字符串数组:

<mapper>.writeValue(System.out, Arrays.asList("a", "b", "c"));

[ "a", "b", "c" ]

但是,字符串在我们的代码中被类包装/封闭:
public static class StringWrapper {
    protected final String s;

    public String getS() {
        return s;
    }

    public StringWrapper(final String s) {
        this.s = s;
    }
}

序列化“字符串包装器”列表时,我希望具有与上述相同的输出。现在我得到:
<mapper>.writeValue(System.out, Arrays.asList(new StringWrapper("a"), new StringWrapper("b"), new StringWrapper("c")));

[ {
  "s" : "a"
}, {
  "s" : "b"
}, {
  "s" : "c"
} ]

最方便的方法是什么?如果可能,反序列化也应起作用。

最佳答案

您可以在单个getter上使用@JsonValue

@JsonValue
public String getS() {
    return s;
}

在javadoc中,

10-06 10:05