无法使用jsonpath解析并返回布尔值

问题描述

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

到目前为止,我使用过的所有表达式(例如 $。commits []。 [?(@ =〜/test.*?/i)]) )会为我提供文件列表(如果表达式匹配),我需要设置一个固定值( true false ),而不是修改后的[]元素值,如果修改后的元素中的任何数组元素均以 'test'

任何帮助将不胜感激。

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

解决方法

JSONPath的定义是:

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

您可以得到的只是“原始JSON的子集”。 JSONPath的结果始终是JSON。由于truefalse不是有效的JSON,因此您无法取回它们中的任何一个。您可以获取一个包含truefalse的JSON结构,但前提是这些值位于原始JSON中。

通常在这里完成的工作是获取结果JSON,然后进行测试以确定它是否符合某些条件。在您的情况下,您希望总是返回一系列路径。您的标准是“结果列表是否为空?”。因此,您需要测试返回的列表是否为空,或者得出truefalse的“固定值”。