当前位置: 首页 > 面试题库 >

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

季森
2023-03-14
问题内容

使用Jersey和Jackson创建REST接口,当其中包含0或1个html" target="_blank">元素时,如何将列表字段序列化为列表。例如:

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

@Path("foo")
public FooResource {
  @GET
  public Foo getFoo() {
    return theFoo;
  }
}

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

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


问题答案:

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



 类似资料:
  • 我正在使用Jackson 2.4将对象序列化为JSON。 当我序列化对象列表时,如果某些元素为空,则结果字符串包含一些“空”字符串。 如何防止元素被序列化?是否有任何配置?我已经设置了! 下面是我的代码: 连载之后我得到了这个:

  • 我有一个JSON字符串,它将空列表标记为而不是。因此,例如,如果我有一个没有子对象的对象,我将收到这样的字符串: 我想将其反序列化为父类,将子类正确设置为子类的空列表。 对于上面的JSON字符串,我想要一个将其id设置为13的对象,并将子元素设置为新的ArrayList 我知道如何为整个类使用注释 然后呢 但是,我想解决从字符串正确实例化列表的一般问题: 我能得到这样的东西吗?

  • 问题内容: 如何将作为地图的属性序列化为地图的值列表?我已经能够使用吸气剂上的注释进行其他简单的转换。但是,我不确定我想做什么。 问题答案: 我们需要类似的东西,在我们的案例中,我们使用了您所评论的自定义项,这很简单: 使用它的代码:

  • 我试图使用一个服务,它给我一个实体,它的字段是一个数组。 但是,当数组包含单个项时,将返回项本身,而不是返回一个元素的数组。 在这种情况下,Jackson无法转换为我的Java对象。 有一个简单的解决方案吗?

  • 我想将json反序列化到类Foo: IBar有两个实现,但是当反序列化时,我总是想使用第一个实现。(理想情况下,这将使问题变得更容易,因为不需要运行时类型检查) 我相信我可以编写自定义反序列化程序,但我觉得一定有更简单的方法。 我找到了这个注释,它在没有列表的情况下非常有效。

  • 我正在创建一个具有嵌套列表的API。Jackson似乎是一个创建对象的好工具,但我不太清楚如何嵌套列表,我想知道这是否可能。 我的对象看起来像这样。 我希望有一种方法可以将其映射到json,看起来像: 我们希望能够做到这一点,以便我们可以将属性添加到列表中。