【发布时间】:2017-11-17 13:24:43
【问题描述】:
从下面的 JSON 响应中,我可以使用 hamcrest 库中的此方法验证 JSONpath 中是否存在根节点:
assertThat(json, hasJsonPath("$.tool"));
这会检查名为“工具”的根节点是否存在。
{
"tool":
{
"jsonpath":
{
"creator":
{
"name": "Jayway Inc.",
"location":
[
"Malmo",
"San Francisco",
"Helsingborg"
]
}
}
},
"book":
[
{
"title": "Beginning JSON",
"price": 49.99
},
{
"title": "JSON at Work",
"price": 29.99
}
]
}
如果我想使用存储在变量中的数组来检查两个根节点(工具和书)是否存在,如何实现?我不关心它们的值或子节点的值。我只是想验证这 2 个根节点是否存在于响应中并且是有效路径。
在将我的 API 响应串入一个“json”变量后,我尝试了如下操作:
JsonPath jp = new JsonPath(json);
String[] rootNodes = {"tool", "book"};
assertThat(json, hasJsonPath(json.getString(rootNodes)));
但编译器对getString 方法不满意。
有没有办法解决这个问题?
【问题讨论】: