如何让 Jersey/Jackson 序列化空列表;作为数组的单个元素列表

Bra*_*tte 6 java json jersey jackson

使用 Jersey 和 Jackson 创建 REST 接口,当列表字段中有 0 或 1 个元素时,如何将列表字段序列化为列表。例如:

@XmlRootElement(name="foo")
public class Foo {
  @XmlElement
  public List<Bar> getBars() {
    return this.bars;
  }
}

@Path("foo")
public FooResource {
  @GET
  public Foo getFoo() {
    return theFoo;
  }
}
Run Code Online (Sandbox Code Playgroud)

当 bar 没有元素时,结果序列化为null,当它包含单个元素时,它序列化为该元素,而不是包含单个元素的数组。有没有办法让这些总是序列化为数组?

作为参考,我使用的是 Jersey 1.10 和 Jackson 1.9.2。

Sta*_*Man 4

我非常确定您实际上并没有使用 Jackson(JSON 序列化的“POJO”变体),因为 Jackson 不会将单元素数组或列表转换为其他任何内容。因此,您可能正在使用一种传统的输出方法(例如抛弃);这意味着如果您将系统配置为使用 POJO 映射,它应该可以正常工作。