2016-11-24 75 views
-1
JSONArray jsonArray = (JSONArray) obj; 

當我使用上面的代碼JSON數組值,則顯示錯誤消息:如何從文件中讀取

java.lang.ClassCastException: org.json.simple.JSONObject cannot be cast to org.json.simple.JSONArray 

請任何人提出來克服這一錯誤或任何其他方式來讀取JSON的任何方法值在Java(桌面應用程序)中形成一個文件。

+1

你能告訴我們你的JSON文件嗎?作爲你的異常它自我表明你沒有JSONArray在你的文件中。 –

回答

0

檢查文件的內容。內容不是數組,而是json對象。

用文本編輯器打開文件。如果內容是這樣的:

{ // First character 
    ... content here 
} // Last character 

它是一個對象,如果是類似

[ // First character 
    ... content here 
] // Last character 

它是一個數組。

如果你需要閱讀你需要改變你的代碼如下目標:

JSONObject jsonObject = (JSONObject) obj; 
0
JSONArray jsonArray = (JSONArray) obj; 

obj是JSONObject的類型,因此改變該行

JSONObject jsonObject = (JSONObject)obj; 
0

使用這用於從文件中獲得字符串格式的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 

希望這有助於你。