【问题标题】:Custom JSON serialization for List<MyClass> with Jackson使用 Jackson 为 List<MyClass> 自定义 JSON 序列化
【发布时间】:2012-02-23 12:41:55
【问题描述】:

MyClass如下:

@Getter
class MyClass
{
    private final DateTime start;
    private final DateTime end;
}

我希望 List 与 Jackson 一起序列化为 JSON,但格式与预期不符。我目前正在挖掘 Jackson 文档,但第一次阅读它们有点棘手。

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"
 } ]

但我希望它是:

[ [ "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" ] ]

所以不要打印成员名称并将内部 {} 替换为 []。

【问题讨论】:

  • 为什么不简单地序列化一个 DateTime 数组并在客户端成对地获取它们呢?如果您不想要 JSON 输出中的属性,请不要序列化 ​​MyClass

标签: java json serialization jackson


【解决方案1】:

@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};
    }
}

这告诉 Jackson 在序列化为 JSON 时应该如何处理 MyClass

【讨论】:

    猜你喜欢
    • 2014-08-02
    • 2013-10-10
    • 1970-01-01
    • 2016-03-14
    • 2011-04-12
    • 2013-01-18
    • 2014-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多