簡體   English   中英

在 java 中出現錯誤 JSONObject 無法轉換為 JSONArray?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM