2016-11-24 16 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 

希望这有助于你。