首页 > 解决方案 > 放心,无法为 Post 调用提取 JSON 响应

问题描述

有人可以帮我提取 JSON 响应吗?我想在客户端下获取资产和 ID 和名称的值,并在我的代码中声明它。在我的 java 代码中提取这些值对我没有任何作用

[
    {
        "metadata": {
            "asset": "ef59872625",
            "customerInfo": {
                "client": {
                    "id": "0CgIHVIA3",
                    "name": "JAssociates"
                }
            },
            "adInfo": {
                "title": "Te1",
                "adId": "Te1",
                "cartNumber": "98462",
                "dueDate": "2021-06-23",
                "dubber": {
                    "id": null,
                    "name": null,
                    "email": null
                },
                "archiveOn": "2021-06-29",
                "eraseOn": "2021-09-24",
                "length": {
                    "unit": "seconds",
                    "amount": 30
                },
                "creatID": 15813794
            },
            "targetInfo": [
                {
                    "channelType": "AA",
                    "market": {
                        "id": 400,
                        "name": "Dallas, TX",
                        "Status": "Success",
                        "Status2": {
                            "state": "Submitted",
                            "message": null
                        }
                    }
                }
            ]
        },
        "links": [
            {
                "href": "https://interntadata",
                "type": "metadata"
            },
            {
                "href": "https://interntent",
                "type": "content"
            }
        ]
    }
]

任何指针这将是一个很大的帮助

标签: javarest-assuredrest

解决方案


1) 首先,通过点击 URL 获取响应正文。

Response resp =  RestAssured.given().headers("Content-Type", ContentType.JSON, "Accept", ContentType.JSON).
                when().get("{{YOUR-URL}}").
                then().contentType(ContentType.JSON).extract().response();
        String responseBody = resp.getBody().asString();

2) 从 JSON 中提取值:

第一种方法:使用 JsonPath

import io.restassured.path.json.JsonPath;

JsonPath js = new JsonPath(responseBody);
String asset = js.getString("metadata.asset");
System.out.println(asset);
String id = js.getString("metadata.customerInfo.client.id");
System.out.println(id);
String name = js.getString("metadata.customerInfo.client.name");
System.out.println(name);

第二种方法:

import org.json.JSONArray;
import org.json.JSONObject;

JSONArray object = new JSONArray(responseBody);
JSONObject metadataObj = ((JSONObject)object.get(0)).getJSONObject("metadata");
String asset = metadataObj.getString("asset");
System.out.println(asset);
JSONObject customerInfoObject = metadataObj.getJSONObject("customerInfo");
JSONObject clientObject = customerInfoObject.getJSONObject("client");
String id = clientObject.getString("id");
System.out.println(id);
String name = clientObject.getString("name");
System.out.println(name);

<dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>LATEST</version>
    </dependency>

推荐阅读