使用 JSONPath 在多个键中查找值

Look for Value in Multiple Keys with JSONPath

使用 JSONPath,如何从已知键列表中提取单个值?

例如,我想编写一个 JSON 路径表达式,可以从所有这三个 JSON 文档中提取 Sean

  1. { "firstName": "Sean" }
  2. { "first_name": "Sean" }
  3. { "first_name": "Sean", "firstName": "Sean" }

这个例子有点做作,但我有一个实际用例需要这种行为。

我能想出的最好的办法是表达式 $.firstName,first_name,它适用于 #1 和 #2,但 returns 是一个适用于 #3 的数组——我只想要匹配的第一个值.

基本上,我正在寻找模拟此 JavaScript 代码的 JSON 路径提取表达式:

json.firstName || json.first_name

您可以使用索引获得 json 路径。当我使用 rest-assured 时,我总是使用类似于下面代码的东西从我的 json 响应中提取值。

Response response=given().contentType(ContentType.JSON).get("http://localhost:3000/posts");
    JsonPath jsonPathEvaluator = response.jsonPath();
    String fn1 = jsonPathEvaluator.get("firstName[0]");
    String fn_1=jsonPathEvaluator.get("first_name[0]");
    String fn2=jsonPathEvaluator.get("firstName[1]");

您可以将所有 pair 传递给 dict,然后提取您的值,或者如果您只需要值,您可以使用 set 结构来存储键并将列表分隔为值。

我相信你想要像下面这样的东西:)