0

私は一晩中検索してきましたが、自分に合ったものを見つけることができませんでした.

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/ にsome.jsonファイルをダウンロードするためです。

クラスコードの残りの部分は次のとおりです。

        // 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();
    }
}

私は Java の学習を始めたばかりで、あなたの助けに大いに感謝します!

4

3 に答える 3

4

それ以外の

 JSONObject json = new JSONObject(line);

最後に読み取った行を JSON オブジェクトに変換します (そしておそらく失敗します)。

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

行の連結(の内容StringBuilder)を取ります

于 2013-06-27T08:36:49.297 に答える
1

この行では、JSON オブジェクトを作成するために 1 行だけを読み込んでいます。

 JSONObject json = new JSONObject(line);

StringBuilderJSON 文字列全体を含むを使用する必要があります。

 JSONObject json = new JSONObject(sb.toString());
于 2013-06-27T08:36:45.497 に答える