json - 放心使用 Jayways Jsonpath?
问题描述
我花了很长时间弄清楚使用 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-Assured 使用这个首选的 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 "";
}
解决方案
通过完全排除放心并在响应主体上使用 jsonPath 来解决此问题,如下所示:
emailBodies = JsonPath.read(given().when().get(MESSAGES_ENDPOINT).getBody().asString(), generatePayLoadForEmailPrefixOf(emailPrefix));
推荐阅读
- python - 日期时间输出的差异
- svelte - 使用保留字作为道具名称
- spacy - 链接法国 Spacy 模型但未能加载它
- c++ - 是否可以找出两个模板参数之间的表达式类型?
- javascript - 如何使用 Proxy 显示 Promise 内部插槽值?
- c - macos Mojave `DYLD_INSERT_LIBRARIES` 分段错误
- pytorch - GAN,判别器仅输出 0 或 1
- julia - 试图理解 Julia 宏 @isdefined
- javascript - Redux 函数“connect”在无状态组件中分配了错误的状态值
- python - while 循环不会传递给另一个 while 循环