Java 无法解析&;使用jsonpath返回布尔值

Java 无法解析&;使用jsonpath返回布尔值,java,jsonpath,Java,Jsonpath,我有一个简单的JSON(见下文)。修改后的数组元素中的内容可能会有所不同。每当修改的元素至少有一个以“test/”开头的文件名时,我需要有一个固定的输出,如果没有一个文件以“test/”开头,则需要另一个输出。我需要使用JsonPath来实现这一点 到目前为止,我使用过的所有表达式(例如,$.commits[].[?(@=~/test.*?/I)]都提供了文件列表。如果表达式匹配,我需要一个固定值(true或false),而不是修改后的[]元素值,如果修改后的元素中有任何数组元素以开头,“tes

我有一个简单的JSON(见下文)。修改后的数组元素中的内容可能会有所不同。每当修改的元素至少有一个以“test/”开头的文件名时,我需要有一个固定的输出,如果没有一个文件以“test/”开头,则需要另一个输出。我需要使用JsonPath来实现这一点

到目前为止,我使用过的所有表达式(例如,$.commits[].[?(@=~/test.*?/I)]都提供了文件列表。如果表达式匹配,我需要一个固定值(truefalse),而不是修改后的[]元素值,如果修改后的元素中有任何数组元素以开头,“test”

任何帮助都将不胜感激

{"commits":[{"modified":["test/db/ecs-db.sql","test/infra/infra-settings.json","test1/code/code.java"]}]}

JSONPath的定义是:

JSONPath定义要遍历JSON文档的表达式 提取JSON的子集

你能得到的只是“原始JSON的子集”。JSONPath的结果总是JSON。由于
true
false
都不是有效的JSON,因此您无法将它们中的任何一个取回。您可以返回包含
true
false
的JSON结构,但前提是这些值在原始JSON中


这里通常要做的是,返回生成的JSON,然后对其进行测试,以确定它是否符合某些标准。在您的情况下,您希望总是返回一个路径数组。您的标准是“结果列表是否为空?”。因此,您需要测试返回的列表是否为空,以获得
true
false

的“固定值”。您不能简单地检查返回的文件列表是否为空(长度为零)?谢谢@Steve,不幸的是,我在这里没有使用Java或Python之类的编程语言。表达式正在Terraform中执行,JsonPath表达式选择的值必须与另一个字段中指定的硬编码值匹配。因此,只要我能从JsonPath表达式中得到一个常量值,如果任何数组元素以test/或don开头,那么我就可以将它与另一个值进行比较。正如您所提到的,是否有任何方法可以在JsonPath中测试“结果列表是否为空?”您可以测试“[]”吗我认为您可以,因为我希望您处理的是JSON字符串,而不是扩展的表单。再说一次,它不可能是JSONPath。它必须是一个地形的东西。我喜欢Terraform,但我没有对它做任何特别的设计,当然也没有遇到过这个问题:)