我想使用 Jackson 来解析 JSON Bing 结果,但我对如何使用它有点困惑。以下是从 Bing 收到的 JSON 示例:
{
"SearchResponse":{
"Version":"2.2",
"Query":{
"SearchTerms":"jackson json"
},
"Web":{
"Total":1010000,
"Offset":0,
"Results":[
{
"Title":"Jackson JSON Processor - Home",
"Description":"News: 04-Nov-2011: Jackson 1.9.2 released; 23-Oct-2011: Jackson 1.9.1 released; 04-Oct-2011: Jackson 1.9.0 released (@JsonUnwrapped, value instantiators, value ...",
"Url":"http:\/\/jackson.codehaus.org\/",
"CacheUrl":"http:\/\/cc.bingj.com\/cache.aspx?q=jackson+json&d=4616347212909127&w=cbaf5322,11c785e8",
"DisplayUrl":"jackson.codehaus.org",
"DateTime":"2011-12-18T23:12:00Z",
"DeepLinks":"[...]"
}
]
}
}
}
我真的只需要结果数组中的数据。这个数组可以有 0 到 n 个结果。有人可以提供一个示例来说明如何使用 Jackson 反序列化“Results”吗?
最佳答案
首先,将您的 JSON 视为一棵树。实例化一个 ObjectMapper
并使用 readTree()
方法读取您的 JSON。
这将为您提供一个 JsonNode
。获取结果作为另一个 JsonNode
并循环遍历数组:
final ObjectMapper mapper = new ObjectMapper();
final JsonNode input = mapper.readTree(...);
final JsonNode results = input.get("SearchResponse").get("Web").get("Results");
/*
* Yes, this works: JsonNode implements Iterable<JsonNode>, and this will
* cycle through array elements
*/
for (final JsonNode element: results) {
// do whatever with array elements
}
您还可以考虑使用 JSON 架构实现来验证您的输入。无耻插件:https://github.com/fge/json-schema-validator
关于java - 使用 Jackson 解析 JSON Bing 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8610657/