使用jackson遍历json树
我正在开发一个通过 JSON 与第三方通信的新系统。
其中一个调用返回一个巨大的 JSON 结构来表示产品和规则。
我已经使用 Jackson 非常轻松地将这个 JSON 转换为树。现在的问题是我希望能够通过“查询”找到节点,而无需手动遍历整个树。
因此,在树的深处有一个对象,它有一个名为business_id 的字段。我想返回所有具有该字段的节点。
这可能吗?
I'm developing a new system that talks to a third party via JSON.
One of the calls returns a huge JSON structure to represent products and rules.
I've used Jackson to convert this JSON into a tree quite easily. Now the issue is I want to be able to find nodes by 'querying' without manually traversing the whole tree.
So somewhere deep in the tree is an object which has a field called business_id. I want to return all the nodes that have this field.
Is that possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用此处记录的 Jackson JsonNode 类:
http://fasterxml.github.io /jackson-databind/javadoc/2.5/com/fasterxml/jackson/databind/JsonNode.html
将数据解析为 JsonNode (例如通过ObjectMapper.readValue),然后您可以以编程方式将该 JSON 结构作为树进行遍历。
查看以下方法:as{datatype}、find[Value|Values]、is[Array|Object|{datatype}]、path 等。
You can use Jackson's JsonNode class documented here:
http://fasterxml.github.io/jackson-databind/javadoc/2.5/com/fasterxml/jackson/databind/JsonNode.html
Parse your data into a JsonNode (e.g. by ObjectMapper.readValue), then you can traverse programmatically that JSON structure as a tree.
Look at methods like: as{datatype}, find[Value|Values], is[Array|Object|{datatype}], path etc.
您可以尝试 Json Path,它可以让您使用它的 xpath 选取 json 节点:
http:// code.google.com/p/json-path/
You could try Json Path, it lets you pick up a json node using it's xpath:
http://code.google.com/p/json-path/