[英]Getting a error JSONObject cannot be cast to JSONArray in java?
我需要一些幫助來解決這個問題,我有: java.lang.ClassCastException: org.json.simple.JSONObject cannot be cast to org.json.simple.JSONArray
我嘗試將[]
包裹在我的 jsonobject 上,但這不起作用。 誰能幫我用下面的代碼解決這個問題。 謝謝你!
這是我的代碼:
JSONParser parser = new JSONParser();
jsonArray = (JSONArray) parser.parse(response);
JSONObject jsonObject;
jsonObject = (JSONObject) jsonArray.get(0);
String email = jsonObject.get("EmailAddress").toString();
java 的標准 JSON 庫來自json.org
,專為動態語言而設計,因此絕對不適合 Z923F425A48B323 不要使用它; 改用 Jackson 或 GSON 之類的東西。
問題是,無論您擁有什么 JSON 都不是數組,例如{data: [{a: 1}, {b: 2}]}
,這是明智的,因為 JSON 在技術上暗示“頂級”東西必須是 object 或者它被認為是無效的,即使許多、許多、許多用法和實現都標榜該規則(不幸的是,JSON 有一個相當大的缺點,即每個人都在一個簡單的標准之上堆積附錄和警告。滾動用這些拳頭是工作的一部分)。
換句話說, parser.parse(response)
正在返回一個JSONObject
,因為您正在解析一個 JSON object: a thing in {}
,而不是[]
。 鑒於您尚未粘貼實際的 JSON,誰知道這意味着什么。 可能只有一個元素被發送給您,例如您想要:
// JSON looks like:
// {"EmailAddress": "something@somewhere"}
JSONParser parser = new JSONParser();
JSONObject jsonObject = (JSONObject) parser.parse(response);
String email = jsonObject.get("EmailAddress").toString();
或者可能 output 數組本身包裝在 JSON object 中,具有單個值,例如您想要:
// JSON looks like:
// {"data": [{"EmailAddress": "something@somewhere"}]}
JSONParser parser = new JSONParser();
JSONObject main = (JSONObject) parser.parse(response);
jsonArray = main.getJSONArray("data");
JSONObject jsonObject;
jsonObject = (JSONObject) jsonArray.get(0);
String email = jsonObject.get("EmailAddress").toString();
實際上,您不想要其中任何一個,您想刪除它並閱讀有關 Jackson 或 GSON 的教程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.