0

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

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

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

我想获得价格值,我正在使用 JsonPathEvaualtor.setRoot("catalog")?我是使用 ("price") 还是有其他东西用于在目录数组内部遍历,然后在该价格数组内部遍历。

4

2 回答 2

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

于 2018-08-15T17:26:59.870 回答
0

所以基本上你的 json 的解析结构放心,这是为了得到“价格”数组

List<Map<String, List<Map<String, String>>>>

这是解决方案

首先将根目录设置为目录

JsonPathEvaualtor.setRoot("catalog")

要获取与数组中第一个地图元素相对应的 priceValue,请执行以下操作

response.jsonPath().getList("$").getMap("Price").get(0).getMap(0).getString("priceValue");

我不确定上面的代码是否没有错误,因为我没有执行它。希望它能让您对解决方案的方向有所了解

请参阅本教程以获取更多示例 ono 在放心响应中解析列表和映射https://www.testingexcellence.com/parse-json-response-rest-assured/

于 2018-08-13T13:13:50.447 回答