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

请放心使用Jayways Jsonpath?

葛子昂
2023-03-14

我花了很长时间弄清楚一些使用Jayways版本的JsonPath,我的查询如下:

$.items[?(@.To[0].Mailbox == 'foobar')]..Body

但是,这不适用于Rest Assured,在执行时,我会看到以下错误:

java.lang.IllegalArgumentException: Invalid JSON expression:
Script1.groovy: 1: expecting EOF, found '[' @ line 1, column 34.
                            $.items[?(@.To[0].Mailbox == 'foobar')]..Body

是否需要以GPath格式重写此表达式?如果是这样,那会是什么样子?或者,我可以以某种方式让Rest-Asken使用这个首选的JsonPath表达式吗?

下面是一段小的[WIP]代码,目前正在尝试使表达式工作,然后我将正确地修复该方法:

public String readInbox(String emailAddress) {
    Response response =  given().log().all().when().get(MESSAGES_ENDPOINT);
    JsonPath jsonPath = new JsonPath(response.asString());
    String emailAddress = jsonPath.getString("$.items[?(@.To[0].Mailbox == 'foobar')]..Body");
    System.out.println(accountVerificationEmailHyperlinkByEmailAddress);
    return "";
  }

共有1个答案

史修谨
2023-03-14

解决这一问题的方法是完全排除了这一问题,并在响应主体上使用jsonPath,如下所示:

emailBodies = JsonPath.read(given().when().get(MESSAGES_ENDPOINT).getBody().asString(), generatePayLoadForEmailPrefixOf(emailPrefix));
 类似资料:
  • 我必须发送一个带有xml数据的post请求,然后验证响应,例如检查状态代码和响应体。

  • 对于包含JSON主体的post请求,我使用rest assured 我的post请求代码是:- 好心的帮助....

  • 我使用的是junit4提供的restassured。在我的测试方法中,我在mongodb中创建了一个对象,当我运行测试时,它也成功地持久化了。但是我需要存储创建的id,所以我尝试获取响应体。但是< code>response.getBody()。asString()为空。 当我从外部调用restendpoint时,它会返回带有相关字段的响应体,因此rest API没有问题。 如果上述问题没有答案,

  • 这一条给出: 这个: 我想做的是避免为所有测试编写完整的jsons,如果我可以跳过所有“”和{},将会更快。我的方法正确吗?

  • 我是新来的,请放心。我尝试了下面的代码来获得响应 这是json响应 如何计算id或列表的大小。帮助我。

  • 我想解析我的JSON响应来验证我获得的响应。 现在,我正在为此使用Rest-放心java API,我通过了关于工具QA和他们正在使用的教程 对于Json:- 现在这个响应是一个JSON对象。但我的嵌套在JSON数组中。 如何解析这些嵌套的Json对象和数组?因为Json响应可以出现在数组和对象的所有组合中。 它们是提供与键相对应的值的可靠方法吗?例:“key”:“value”我去找key,通过那个