java - 放心,无法为 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"
}
]
}
]
任何指针这将是一个很大的帮助
解决方案
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>
推荐阅读
- c++ - 从我的字符串函数返回主函数是什么?
- arrays - Golang:使用相同的结构解析 JSON 中的两个数组数组
- python - 为什么发现两个相同的字符串不相等?
- python - 如何使用cupy循环numpy ndarray?真的会提高执行时间吗?
- javascript - 未捕获的 ReferenceError:openModal 未在 js 活动管理员中定义
- javascript - 如何在网络应用程序上打开手机上的相机?
- javascript - 基于动态值 es6 的解构
- javascript - 如何按各自的组号对数组中的对象进行分组
- css - 分层不透明元素共同打造新色彩
- ios - 无法在一个视图控制器上使用两个 UIPickerView