gpt4 book ai didi

Java 和 REST Web 服务 - GET 方法返回 JSONObject ["....."] 不是 JSONObject

转载 作者:行者123 更新时间:2023-12-01 17:55:54 25 4
gpt4 key购买 nike

我正在尝试从 REST Web 服务获取 JAVA 响应。

使用HTTP请求工具正确返回JSON结构。这是可以在浏览器的附加工具中看到的 JSON 响应:

{
"QueryMXASSETResponse": {
"rsStart": 0,
"rsCount": 1,
"MXASSETSet": {
"ASSET": [
{
"Attributes": {
"ASSETID": {
"content": 123
},
"ASSETNUM": {
"content": "SM-A-3002"
},
"DESCRIPTION": {
"content": "restint"
}
}

}
]
}
}
}

这是我在 Java 应用程序中的 MAIN 方法中的代码(我想获取描述值)

String response = httpGet("http://192.168.150.18:9080/maxrest/rest/os/mxasset/?assetid=~eq~123");
System.out.println(response+"\n");
//Parsing JSON response
JSONObject jsonObj = new JSONObject(response);
if (jsonObj.has("QueryMXASSETResponse")){
JSONObject jsonObj2 = jsonObj.getJSONObject("QueryMXASSETResponse");
JSONObject jsonObj3 = jsonObj2.getJSONObject("MXASSETSet");
JSONObject jsonObj4 = jsonObj3.getJSONObject("ASSET");
JSONObject jsonObj5 = jsonObj4.getJSONObject("Attributes");
JSONObject jsonObj6= jsonObj5.getJSONObject("DESCRIPTION");
System.out.println("Description is: "+jsonObj6.getString("content"));

}

返回的错误是针对 jsonObj4 的,它表示它不是 JSONObject,尽管您可以在上面的响应中看到它是。为什么我会异常(exception)?你能帮忙吗?谢谢

Exception in thread "main" org.json.JSONException: JSONObject["ASSET"] is not a JSONObject.
at org.json.JSONObject.getJSONObject(JSONObject.java:557)
at com.getAsset.GETAssets.main(GETAssets.java:91)

最佳答案

在示例中,JSON“ASSET”包含一个集合。这可以通过"ASSET": [看出。您需要使用JSON Array相反。

使用 json.org 库回答

JSONObject descriptionJson = null;
if (jsonObj3.has("ASSET")) {
JSONArray jsonArray1 = jsonObj3.getJSONArray("ASSET");
if (jsonArray1.length() > 0) {
JSONObject asset = jsonArray1.getJSONObject(0);
JSONObject attributesObj = asset.getJSONObject("ATTRIBUTE");
descriptionJson = attributesObj.getJSONObject("DESCRIPTION");
}
}
if (descriptionJson != null) {
//Do your processing here.
}

使用 Java JSON API 进行回答

JSONObject descriptionJson = null;
JSONArray jsonArray1 = jsonObj3.getJSONArray("ASSET");
if (jsonArray1 != null && !jsonArray1.isEmpty()) {
JSONObject asset = jsonArray1.getJSONObject(0);
JSONObject attributesObj = asset.getJSONObject("ATTRIBUTE");
descriptionJson = attributesObj.getJSONObject("DESCRIPTION");
}
if (descriptionJson != null) {
//Do your processing here.
}

这是假设没有任何内容可以为空,但列表可能为空。如果情况并非如此,那么您可以添加 null 检查或删除 isEmpty 检查。

关于Java 和 REST Web 服务 - GET 方法返回 JSONObject ["....."] 不是 JSONObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44805129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com