当前位置: 首页 > 知识库问答 >
问题:

请放心 - JsonPath - 我需要根据条件同时提取两个值

田志
2023-03-14

我在使用JsonPath提取值时遇到了困难。这是我的json,

    applications:[
    {
    "ab": 123,
    "isReady": true,
    "proId": 234
    },
    {
    "ab": 345,
    "isReady": false,
    "proId": 098
    },
    {
    "ab": 332,
    "isReady": true,
    "proId": 100
    }
]

我想在“isReady”值为真时提取“ab”和“proId”的值。一旦完成,我需要使用上述值构造下面的json。下面的示例,

[
{  
   "ab": 332,
   "proId": 100
},
{
    "ab": 123,
    "proId": 234
}
]

我只能提取如下单个值,

List<Integer> abList = jsonFindAllUserJobApplicantsResponse.get("applications.findAll{ it.isReady == true}.ab");

List<Integer> proIdList = jsonFindAllUserJobApplicantsResponse.get("applications.findAll{ it.isReady == true}.proId");

你能在这个场景中帮助我们如何提取和构建想要的结果吗?

非常感谢您的帮助。

共有1个答案

岳风畔
2023-03-14

试试这个:

    ArrayList<Map<String,?>> result = jsonFindAllUserJobApplicantsResponse.get("applications.findAll{ it.isReady == true}");
    try {
        // use Jackson library to convert map to json string
        new ObjectMapper().writeValueAsString(result);
    } catch (JsonProcessingException e) {
        e.printStackTrace();
    }

参考:https://james-willett.com/2017/05/rest-assured-gpath-json/

 类似资料:
  • 我试图使用Rest assured和JsonPath从pzSetRuleSetFilter字段中提取一个值,其中pyRuleSetName等于某个值(在本例中为商标)。我一直得到下面的错误。任何关于如何解决这个问题并提取价值的想法都是很好的 无效的JSON表达式:script1.groovy:1:需要EOF,发现“[”@第1行,第39列。 我的查询system.out.println(respon

  • 我花了很长时间弄清楚一些使用Jayways版本的JsonPath,我的查询如下: 但是,这不适用于Rest Assured,在执行时,我会看到以下错误: 是否需要以格式重写此表达式?如果是这样,那会是什么样子?或者,我可以以某种方式让Rest-Asken使用这个首选的JsonPath表达式吗? 下面是一段小的[WIP]代码,目前正在尝试使表达式工作,然后我将正确地修复该方法:

  • 我需要从从 Rest Assured 建模请求返回的 JSON 响应数据中获取两个值: 这抛出和 获取这些的正确、最好的方法是什么?我知道我可以链接关闭请求,但不确定如何获取

  • 该函数包含API,我可以在其中获取JSON格式的值。但我想获取JSON中存在的确切ID=2如何使用JavaJSON路径获取该数据。我必须使用maven依赖项。该函数包含API,我可以在其中获取JSON格式的值。但我想获取JSON中存在的确切ID=2如何使用JavaJSON路径获取该数据。我必须使用maven依赖项。 这个响应帮助我从每个数据中找到键值。

  • 我需要使用REST保证Jsonpath根据匹配标准获取计数值 我尝试了以下方法,但不起作用: JSON:

  • 我正在收到以下结构的响应: ] 每当我想提取JSON属性时,例如描述,最终的对象不是我所期望的。它创建具有ArrayString的列表。 如何将值从此JSON对象获取到包含值的简单列表?谢谢