XML和Json不仅是结构化文本,而且擅长表示多层数据,可承载足够通用和足够丰富的信息,因此常被用于各种数据交换和信息传递事务,比如WebService/Restful,微服务等。但多层数据要比传统的二维表结构复杂,取数后再处理的难度也大。
早期,没有专业的json/XML的后处理技术,JAVA开发者通常要采取硬写代码或入库再算的方式。硬编码计算能力差,代码量大,开发效率很低。入库虽然解决了部分计算能力,但步骤多,延迟大,额外制造了JAVA与数据库的紧耦合,架构性很差,而且数据库只擅长计算二维表,处理多层结构化数据的能力并不强。后来,专业的json/XML后处理技术开始出现,才使Java中做这些运算处理的效率有了较大的提升,JsonPath/XPath是其中的优秀者。
JsonPath和XPath具有突破性的计算能力
XPath是广泛使用的XML处理语言,内置于XOM/Xerces-J/Jdom/Dom4J等函数库。JsonPath仿照XPath的语法,实现了类似的功能,且有自己的函数库,目前是广泛使用的Json处理语言。比起以前硬编码的方式,XPath/JsonPath代码简短得多,具有突破性的计算能力。
比如,用arronlongHTTP函数库从WebService取XML字符串,使用Dom4J函数库将XML字符串解析为Document类型,使用Dom4J内置的XPath语法进行条件查询:
Stringpath="