JsonPath 对于 JSON 来说相当于 XPATH 对于 XML,你也想过用如下表达式获取list吧。而不用一个一个jsonobject去遍历;
List<String> list = JsonPath.read(json,
"$..ns:items[?(@.ns:dataName == 'Installaddr')].ns:dataValue");
类似这样获取json中相同对象中的元素,jsonpath的表达式详见:
JsonPath的语法
JsonPath是一种类似XPATH的语法,下表是两者语法的对比:
| XPath | JSONPath | 描述 |
| / | $ | 根节点 |
| . | @ | 现行节点 |
| / | . or [] | 取子节点 |
| .. | n/a | 取父节点,Jsonpath未支持 |
| // | .. | recursive descent(就是不管位置,选择所有符合条件的条件). JSONPath 从 E4X规范中继承了这个语法的使用法。 |
| * | * | 匹配所有元素节点 |
| @ | n/a | 根据属性访问,Json不支持,因为Json是个Key-value递归结构,不需要。 |
| [] | [] | 迭代器标示(可以在里边做简单的迭代操作,如数组下标,根据内容选值等) |
| | | [,] | 支持迭代器中做多选。 |
| n/a | [start:end:step] | 从ES4规范继承的切片方法(非常实用) |
| [] | ?() | 支持过滤操作. |
| n/a | () | 支持表达式计算 |
| () | n/a | 分组,JsonPath不支持 |
更多表达式参照:
http://goessner.net/articles/JsonPath/
依赖包下载附件。
JsonPath提供了一种类似于XPath的语法,使得在处理JSON时能便捷地选取所需数据。例如,可以使用表达式`$..ns:items[?(@.ns:dataName == 'Installaddr')].ns:dataValue`来获取JSON中所有`Installaddr`对应的`dataValue`。要了解更多JsonPath的表达式和用法,可以参考相关文档和在线资源。
2145

被折叠的 条评论
为什么被折叠?



