使用JSONPath在多个键中寻找价值

时间:2019-12-04 15:54:47

标签: jsonpath

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

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

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

这个例子有些人为,但是我有一个实际的用例,需要这种行为。

我能想到的最好的是表达式$.firstName,first_name,它适用于#1和#2,但返回#3的数组-我只想要第一个匹配的值。

基本上,我正在寻找一个模拟以下JavaScript代码的JSONPath提取表达式:

json.firstName || json.first_name

3 个答案:

答案 0 :(得分:1)

我相信您需要类似以下内容:)如果可行,请接受我的回答:)

enter image description here

答案 1 :(得分:0)

您可以使用索引获取json路径。我使用的是放心的,我总是使用类似于下面的代码从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]");

答案 2 :(得分:0)

您可以将所有配对传递给dict,然后提取您的值;或者,如果仅需要值,则可以使用set结构存储键并将值的单独列表分开。