如何从文件中读取Json数组值

时间:2016-11-24 11:21:53

标签: java arrays json feed

JSONArray jsonArray = (JSONArray) obj;

当我使用上面的代码时,它会显示错误消息:

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

请任何人建议任何方法来克服此错误或以任何其他方式从Java(桌面应用程序)中的文件中读取json值。

3 个答案:

答案 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 

你可以从像

这样的数组中获取JsonObject
jsonArray.getJSONObject(0); //0 is index of your JsonObject in JsonArray

希望这对你有所帮助。