JSONArray jsonArray = (JSONArray) obj;
当我使用上面的代码时,它会显示错误消息:
java.lang.ClassCastException: org.json.simple.JSONObject cannot be cast to org.json.simple.JSONArray
请任何人建议任何方法来克服此错误或以任何其他方式从Java(桌面应用程序)中的文件中读取json值。
答案 0 :(得分:0)
检查文件内容。
似乎内容不是数组,而是json对象。
使用文本编辑器打开文件。如果内容类似于:
{ // First character
... content here
} // Last character
它是一个对象,如果它类似于
[ // First character
... content here
] // Last character
它是一个数组。
如果您需要阅读对象,则需要更改代码,如下所示:
JSONObject jsonObject = (JSONObject) obj;
答案 1 :(得分:0)
JSONArray jsonArray = (JSONArray) obj;
此obj
属于JsonObject类型,因此请将该行更改为
JSONObject jsonObject = (JSONObject)obj;
答案 2 :(得分: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
你可以从像
这样的数组中获取JsonObjectjsonArray.getJSONObject(0); //0 is index of your JsonObject in JsonArray
希望这对你有所帮助。