使用Jackson自定义JSON序列化List <MyClass>

gyo*_*ham 1 java serialization json jackson

MyClass如下:

@Getter
class MyClass
{
    private final DateTime start;
    private final DateTime end;
}
Run Code Online (Sandbox Code Playgroud)

我希望List能够与Jackson序列化为JSON,但格式不符合预期.我正在挖掘杰克逊的文档,但是对于第一次阅读它们有点棘手.

JSON输出现在是:

[ {
   "end" : "2012-02-16T13:59:59.000+01:00",
   "start" : "2012-02-16T13:35:42.000+01:00"
 }, {
   "end" : "2012-02-16T16:59:59.000+01:00",
   "start" : "2012-02-16T16:00:00.000+01:00"
 } ]
Run Code Online (Sandbox Code Playgroud)

但我希望它是:

[ [ "2012-02-16T13:59:59.000+01:00", "2012-02-16T13:35:42.000+01:00"],
[ "2012-02-16T16:59:59.000+01:00", "2012-02-16T16:00:00.000+01:00" ] ]
Run Code Online (Sandbox Code Playgroud)

所以不要打印成员名称并用[]替换内部{}.

Ese*_*gün 7

@JsonValue注释是你需要的:http://jackson.codehaus.org/1.0.1/javadoc/org/codehaus/jackson/annotate/JsonValue.html

class MyClass {
    ...
    @JsonValue
    private DateTime[] toValue() {
        return new DateTime[] {start, end};
    }
}
Run Code Online (Sandbox Code Playgroud)

这告诉杰克逊MyClass在被序列化为JSON时应该如何对待.