如果响应中有两个数组可以放心,如何设置根目录

时间:2018-08-13 11:56:50

标签: rest-assured rest-assured-jsonpath

我的API的响应是这样的: JSON

"Catalog": 
[
        {
            "longDescription": "some long description",

        "Price": [
            {
                "priceValue": "60.0",
            }
        ],
        "name": "some name",
       and so on.

我想获取价格值,并且正在使用JsonPathEvaualtor.setRoot(“ catalog”)?我要使用(“价格”)还是在目录数组中然后在该价格数组中进行遍历?

2 个答案:

答案 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