Jayway JsonPath- 提取 JSON 文档内容的 Java DSL | 京东物流技术团队

介绍
JsonPath 是一种能够提取部分 JSON 文档属性、对象、数组的语法,支持条件过滤、数学运算、字符串处理等功能。JsonPath 与 JSON 文档就像 XPath 表达式与 XML 文档结合使用一样。
由于 JSON 结构通常是匿名的,并不一定和 XML 一样具有“根成员对象”,因此 JsonPath 假定分配 $给外层对象的抽象名称。JsonPath 由用点分隔的表达式段(操作符)组成。 操作符可以是一个简单的词,如 JSON 值名称、*,也可以是括在方括号 [ ] 中的更复杂的构造。 括号段前的分隔点是可选的,也可以省略。下面是几种 JsonPath 的提取 JSON 文档内容语法:

Jayway JsonPath是Stefan Goessner JsonPath的 Java 实现,是用于读取 JSON 文档的 Java DSL。本文主要通过 Jayway JsonPath 来简单介绍 JsonPath 的使用语法,通过真实报文案例来进行操作。
支持的操作符

可以通过在 JSONPath 中添加 ~ 后缀来提取匹配的元素名称。 它返回匹配对象的名称或匹配数组项的字符串格式的索引。
过滤操作符

支持的函数
可以在 JsonPath 表达式执行后进行调用,其输入值为表达式的结果。函数的输出看具体某个函数的含义。

用一个复杂的接单报文来演示
https://jsonpath.com,这个在线网站可以用来验证 JsonPath 表达式,但是不支持函数,函数可以通过java
代码来验证。
示例报文
操作结果


作者:京东物流 马红岩
来源:京东云开发者社区 自猿其说 Tech 转载请注明来
版权声明: 本文为 InfoQ 作者【京东科技开发者】的原创文章。
原文链接:【http://xie.infoq.cn/article/a6ad9ba8cba199707dda04086】。文章转载请联系作者。
评论