我知道如何打开 Object
在 jackson ,但我找不到任何关于如何展开两层的示例。
Sharepoint API 端点返回以下格式的所有内容:
{
"d": {
"results": [
{
/* lots objects with lots of properties
that are irrelevant to the question */
}
]
}
}
我尝试了以下方法,但它没有使 results
评估顶级对象。
this.om.readerFor(new TypeReference<List<User>>() {})
.withRootName("d")
.readValue(response.parseAsString());
我怎么知道Jackson
开始解析results
作为顶级Array
无需创建自定义对象层次结构并且无需编写自定义反序列化器。我有一个自定义对象,它被注释为将填充,我想要 TypeSafety
所以Map<String,Object>
这不是我想要的。
最佳答案
可能不是最有效的方法,但可以尝试先将对象解析为树,然后导航到您需要的节点。像这样的事情:
mapper.readerFor(new TypeReference<List<User>>() {}).readValue(mapper.readTree(json).get("d").get("results"));
更容易阅读:
mapper.convertValue(mapper.readTree(json).get("d").get("results"), new TypeReference<List<User>>() {});
关于java - 如何告诉 Jackson 将子元素设为顶级元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46307665/