Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中读取JSON文件_Java_Android_Json - Fatal编程技术网

如何在Java中读取JSON文件

如何在Java中读取JSON文件,java,android,json,Java,Android,Json,我整晚都在找,但找不到适合我的东西 我正在尝试用Java读取和解析JSON文件。我尝试了我找到的每一个代码,但没有一个对我有效。我非常感谢你的帮助 下面是代码: public void parseJSONData() { clearData(); try { FileInputStream in = openFileInput(getFilesDir() + "/tbl_category.json"); Inpu

我整晚都在找,但找不到适合我的东西

我正在尝试用Java读取和解析JSON文件。我尝试了我找到的每一个代码,但没有一个对我有效。我非常感谢你的帮助

下面是代码:

public void parseJSONData() {

    clearData();

    try {
        FileInputStream in = openFileInput(getFilesDir()
                + "/tbl_category.json");
        InputStreamReader inputStreamReader = new InputStreamReader(in);
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
        StringBuilder sb = new StringBuilder();
        String line;
        while ((line = bufferedReader.readLine()) != null) {
            sb.append(line);
        }
我使用的是getFilesDir()+“/tbl_category.json”,因为应用程序启动时会在/data/data/com.the.restaurant/files/中下载文件

下面是课程代码的其余部分:

        // parse json data and store into arraylist variables
        JSONObject json = new JSONObject(line);
        JSONArray data = json.getJSONArray("data");

        for (int i = 0; i < data.length(); i++) {
            JSONObject object = data.getJSONObject(i);

            JSONObject category = object.getJSONObject("Category");

            Category_ID.add(Long.parseLong(category
                    .getString("Category_ID")));
            Category_name.add(category.getString("Category_name"));
            Category_image.add(category.getString("Category_image"));
            Log.d("Category name", Category_name.get(i));

        }

    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        IOConnect = 1;
        e.printStackTrace();
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
//解析json数据并存储到arraylist变量中
JSONObject json=新的JSONObject(行);
JSONArray data=json.getJSONArray(“数据”);
对于(int i=0;i

我刚刚开始学习Java,非常感谢您的帮助

在这一行中,您仅读取一行内容来创建JSON对象

 JSONObject json = new JSONObject(line);
它应该使用包含整个JSON字符串的
StringBuilder

 JSONObject json = new JSONObject(sb.toString());

在这一行中,您仅读取一行内容来创建JSON对象

 JSONObject json = new JSONObject(line);
它应该使用包含整个JSON字符串的
StringBuilder

 JSONObject json = new JSONObject(sb.toString());
而不是

 JSONObject json = new JSONObject(line);
它将最后一行读取的内容转换为JSON对象(可能会失败),您需要

 JSONObject json = new JSONObject(sb.toString());
这将采用行的串联(StringBuilder的内容)

而不是

 JSONObject json = new JSONObject(line);
它将最后一行读取的内容转换为JSON对象(可能会失败),您需要

 JSONObject json = new JSONObject(sb.toString());

这将使行的串联(StringBuilder的内容)更加具体。什么不起作用,发生了什么,应该发生什么?问题是。。。哪里什么是不工作的?更改JSONObject json=newJSONObject(行);to JSONObject json=新的JSONObject(sb.toString());具体点。什么不起作用,发生了什么,应该发生什么?问题是。。。哪里什么是不工作的?更改JSONObject json=newJSONObject(行);to JSONObject json=新的JSONObject(sb.toString());