JSONArray jsonArray = (JSONArray) obj;
當我使用上面的代碼JSON數組值,則顯示錯誤消息:如何從文件中讀取
java.lang.ClassCastException: org.json.simple.JSONObject cannot be cast to org.json.simple.JSONArray
請任何人提出來克服這一錯誤或任何其他方式來讀取JSON的任何方法值在Java(桌面應用程序)中形成一個文件。
JSONArray jsonArray = (JSONArray) obj;
當我使用上面的代碼JSON數組值,則顯示錯誤消息:如何從文件中讀取
java.lang.ClassCastException: org.json.simple.JSONObject cannot be cast to org.json.simple.JSONArray
請任何人提出來克服這一錯誤或任何其他方式來讀取JSON的任何方法值在Java(桌面應用程序)中形成一個文件。
檢查文件的內容。內容不是數組,而是json對象。
用文本編輯器打開文件。如果內容是這樣的:
{ // First character
... content here
} // Last character
它是一個對象,如果是類似
[ // First character
... content here
] // Last character
它是一個數組。
如果你需要閱讀你需要改變你的代碼如下目標:
JSONObject jsonObject = (JSONObject) obj;
JSONArray jsonArray = (JSONArray) obj;
這obj
是JSONObject的類型,因此改變該行
JSONObject jsonObject = (JSONObject)obj;
使用這用於從文件中獲得字符串格式的json值
public String loadJSONFromFile() {
String json = null;
try {
InputStream is = getActivity().getAssets().open("yourfilename.json");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
json = new String(buffer, "UTF-8");
} catch (IOException ex) {
ex.printStackTrace();
return null;
}
return json;
}
的JSONObject是JsonArray的孩子,所以按照我的建議使用這樣
final JSONArray jsonArray = new JSONArray();
jsonArray.put(obj); //obj is your JsonObject
,你可以從陣列獲取的JSONObject像
jsonArray.getJSONObject(0); //0 is index of your JsonObject in JsonArray
希望這有助於你。
你能告訴我們你的JSON文件嗎?作爲你的異常它自我表明你沒有JSONArray在你的文件中。 –