我的API的响应是这样的: JSON
"Catalog":
[
{
"longDescription": "some long description",
"Price": [
{
"priceValue": "60.0",
}
],
"name": "some name",
and so on.
我想获取价格值,并且正在使用JsonPathEvaualtor.setRoot(“ catalog”)?我要使用(“价格”)还是在目录数组中然后在该价格数组中进行遍历?
答案 0 :(得分:0)
因此,基本上,请放心地解析json的结构是获得“价格”数组
List<Map<String, List<Map<String, String>>>>
这是解决方案
首先将根目录设置为目录
JsonPathEvaualtor.setRoot("catalog")
要获取对应于数组中第一个map元素的priceValue,请执行以下操作
response.jsonPath().getList("$").getMap("Price").get(0).getMap(0).getString("priceValue");
我不确定上面的代码是否没有错误,因为我没有执行它。希望它能为您提供解决方案的方向
有关在可靠保证https://www.testingexcellence.com/parse-json-response-rest-assured/中解析列表和映射的更多示例,请参考本教程。
答案 1 :(得分:0)
我建议将json反序列化为POJO,然后使用getter从json提取信息,尤其是当json有点复杂[具有列表和嵌套对象]时。
RestAssured提供反序列化的选项。还有其他库,例如gson和jackson。我个人觉得gson易于使用。 请查看以下链接以获取更多见解。
https://futurestud.io/tutorials/gson-mapping-of-arrays-and-lists-of-objects
https://github.com/rest-assured/rest-assured/wiki/usage#deserialization