首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Jackson将json对象转换为java数组。

Spring Jackson将json对象转换为java数组。
EN

Stack Overflow用户
提问于 2017-08-28 16:32:28
回答 2查看 776关注 0票数 1

我有个儿子,如下所示:

{“键”:{“a”:“aValue”}

"key“可以包含json对象和json数组。我创建了以下java对象来映射这个json:

代码语言:javascript
复制
Class Output {
  private List<DummyObject> key;
  // setter, getting ommited
}
Class DummyObject {
  private String a;
}

所以,如果json是

{“键”:{“a”:“val1”},{"a":"val2"}}

输出类的"key“属性应该包含一个由2个对象组成的列表,当json是

{“键”:{“a”:“val1”}

"key“应该只包含一个对象的列表。

我尝试过使用反序列化器,但它不起作用。另外,我不想自己对DummyObject进行反序列化。

EN

回答 2

Stack Overflow用户

发布于 2017-08-28 16:55:33

尝试启用Jackson反序列化功能列阵

代码语言:javascript
复制
final ObjectMapper mapper = new ObjectMapper()
        .enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
票数 0
EN

Stack Overflow用户

发布于 2017-08-28 16:56:10

考虑{"key":[{"a":"val1"},{"a":"val2"}]}

问题不在你的模型与输出;

代码语言:javascript
复制
Class Output {
  private List<DummyObject> key;
  // setter, getting ommited
}

因为这将key表示为json数组。

但是,您可能需要更新DummyObject:

代码语言:javascript
复制
Class DummyObject {
  private String a;
}

代码语言:javascript
复制
Class DummyObject {
  private Map<String,String> a;
}

因为{"a":"val1"}不是DummyObject甚至String a的有效表示。

此外,正如@tima所指出的,对于"key“的不同长度的JSONArray,您必须看看如何使用让Jackson用一个元素将单个JSON对象解释为数组

你问题的最后一条是:

另外,我不想自己去序列化DummyObject。

您可以尝试更新输出模型(从性能角度不确定这是否有益)如下:

代码语言:javascript
复制
Class Output {
  private List<Map<String, String>> key;
  // setter, getting ommited
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45923592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档