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在你的文件中。 –