您好,我有一個 json 回應,作為請求的一部分,我需要訪問其中一個屬性的值。例如,我的回復如下:
{
"data": {
"Members": [
{
"id": "01",
"name": "new york"
},
{
"id": "02",
"name": "chicago"
}
,
{
"id": "03",
"name": "la"
}
]
}
}
我需要提取值“紐約”、“芝加哥”、“拉”。我該怎么做; 我試圖轉換為 JSON 物件,但甚至無法訪問“資料”。:
JSONObject jsonObj = new JSONObject(response.getBody());
JSONArray ja_data = jsonObj.getJSONArray("data");
上面的代碼是各種 googled 答案之一,這個結果是 llegalAccessExcpetion。完整的例外:
Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalAccessException: class org.json.JSONObject cannot access a member of class java.lang.String (in module java.base) with modifiers "private"
at org.json.JSONObject.populateInternalMap(JSONObject.java:349)
at org.json.JSONObject.<init>(JSONObject.java:278)
at GetName.getName(GetName.java:64)
at GetName.main(GetName.java:30)
Caused by: java.lang.IllegalAccessException: class org.json.JSONObject cannot access a member of class java.lang.String (in module java.base) with modifiers "private"
at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:361)
at java.base/java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:591)
at java.base/java.lang.reflect.Method.invoke(Method.java:558)
at org.json.JSONObject.populateInternalMap(JSONObject.java:328)
有什么辦法可以處理這個問題。謝謝
uj5u.com熱心網友回復:
我認為您的問題與 JSON 的決議無關,因為我進行了如下測驗:
// Escaped JSON String, same as presented in question
JSONObject jsonObj = new JSONObject("{\r\n \"data\": {\r\n \"Members\": [\r\n {\r\n \"id\": \"01\",\r\n \"name\": \"new york\"\r\n \r\n },\r\n {\r\n \"id\": \"02\",\r\n \"name\": \"chicago\" \r\n }\r\n ,\r\n {\r\n \"id\": \"03\",\r\n \"name\": \"la\" \r\n }\r\n ]\r\n }\r\n}");
// Parsed "data" as Object
JSONObject data = jsonObj.getJSONObject("data");
// Parsed "Members" as an array
JSONArray arr = data.getJSONArray("Members");
// Selected First Internal Object inside Array of "Members"
JSONObject obje = arr.getJSONObject(0);
// Printed out the "name" which is "new york"
System.out.println(obje.getString("name"));
上面的代碼根據給定的 JSON 作業并正確決議。我想請調查您的response物件的訪問修飾符。
或者,您可以使用GSON或Jackson來決議您的 JSON。
uj5u.com熱心網友回復:
您可以檢索如下值
JSONObject jsonObj = new JSONObject(response.getBody());
JSONObject ja_data = jsonObj.getJSONObject("data");
JSONArray jaarr = ja_data.getJSONArray("Members");
JSONObject obj1 = jaarr.getJSONObject(0);
System.out.println(obj1.getString("name"));
它列印“紐約”
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/354182.html
