杰克逊:将对象字段序列化为数组

时间:2017-01-06 12:25:37

标签: java json jackson

我对Jackson很新,但我偶然发现了以下问题:

我想将一个简单的对象序列化为其字段数组。 所以考虑下面的课程:

public class UserModel {
    private String id;
    private String firstName;
    private String lastName;
    private String email;
    private String company;
}

我得到以下json:

{
   "id":"cec34b58",
   "firstName":"foo",
   "lastName":"bar",
   "email":"foo@bar.com",
   "company":"FooBar"
}

但我想要的是以下内容:

[
   "cec34b58",
   "foo",
   "bar",
   "foo@bar.com",
   "FooBar"
]

如果有更简单的方法,我想避免使用custom serializer。阅读Jackson Annotations,我不会立即看到允许立即转换模型的内容。 Google只建议将Java Collections序列化为json,但不要将其从Java Object序列化为json数组。

3 个答案:

答案 0 :(得分:7)

这不需要自定义序列化程序,只需要简单的注释:

@JsonFormat(shape=JsonFormat.Shape.ARRAY)
public class UserModel {
    // ...
}

答案 1 :(得分:1)

您的方案相当自定义,因此您必须通过自定义序列化程序来完成。

请注意,我建议您修改它,因为在这种情况下添加/删除新字段/更改顺序会更加棘手,尤其是如果您无法同时释放客户端和服务器。

答案 2 :(得分:0)

您可以在类UserModel上添加方法 toList() fromList(),将您的类转换为List或从List转换。您没有使用Jackson序列化UserModel对象,而是序列化列表。