【问题标题】:Use arrays by default instead of ArrayLists in Jackson's ObjectMapper默认使用数组而不是 Jackson 的 ObjectMapper 中的 ArrayLists
【发布时间】:2011-01-04 12:03:10
【问题描述】:

Jackson的ObjectMapper默认将未知列表反序列化为ArrayList,是否可以改为使用String[]?

class SomeBean {
  Object[] items;
}

例如,这个 JSON 导致 items[0] 的类型是 ArrayList:

{"items":[["a", "b"]]}

【问题讨论】:

  • 反序列化后为什么不使用toArray
  • @Valentin - 因为在实际使用中 bean 更复杂,我不想遍历整个对象树来寻找 ArrayLists。

标签: java json jackson


【解决方案1】:

目前没有,但如果您希望看到此类功能,您可以通过在 Jackson JIRA (http://jira.codehaus.org/browse/JACKSON) 创建功能请求来提出建议。实现应该相当简单;由“DeserializationConfig.Feature.JSON_ARRAYS_AS_JAVA_ARRAYS”(或其他)之类的东西启用。

我在这里假设您希望看到一个 Object[],因为不能保证内容都是字符串(可能有数字、字符串、布尔值、列表/映射等)。

【讨论】:

  • 如果都是字符串,我想看一个String[]。
  • 对,只是流式方式无法确定这个;所以它要么需要由调用者声明,要么通过后处理完成(可能通过缓冲所有元素以查看它们的类型)。但是,如果这样做了,它可以用于创建 String[]、Number[] 等。不确定这会有多大用处,但肯定有可能。
猜你喜欢
  • 2020-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-05
  • 2012-02-12
  • 2019-04-08
  • 2017-05-01
  • 1970-01-01
相关资源
最近更新 更多