0

我在项目的 raw 文件夹中的 json 文件中有以下(以及更多,但只是其中的一部分)代码。

{
"Monday": [
    {
        "time": "09:15",
        "class": "Nature",
        "room": "AL32"
    },
    {
        "time": "10:15",
        "class": "Nature",
        "room": "AL32"
    }
],
"Tuesday": [
    {
        "time": "12:15",
        "class": "Maths",
        "room": "AL20"
    },
    {
        "time": "13:15",
        "class": "Englsh",
        "room": "AG22"
    }
]....etc

}

我希望它显示为

Time|Class|Room
Monday
09:15|Nature|AL32
10:15|Nature|AL32
Tuesday
12:15|Maths|AL20
13:15|English|AG22
etc etc

我所做的(到目前为止)是,用 BufferedReader jsonReader = new BufferedReader(new InputStreamReader(this.getResources().openRawResource(R.raw.localjsonfile))); 读取json文件中的信息

然后我可以打印出文件中的所有内容(到 LogCat)

String readLine = null;
// While the BufferedReader readLine is not null 
while ((readLine = jsonReader.readLine()) != null) 
{
    System.out.println(readLine);
}

但我不知道从那里去哪里。我想我在星期一将任何东西存储在一个名为 monday 的数组/对象中(周二在一个名为 tuesday 的数组/对象中),然后打印出数组/对象中的值并将它们放在我拥有的 TextView 字段中(我有三个名为 android:id="@+id/time"、android:id="@+id/class 和 android:id="@+id/room") 的文本视图,然后文本视图将被重新打印到屏幕上如所须。

我才开始学习 android 和 java,我对 json 一无所知,所以我被困在如何走得更远。

4

1 回答 1

0

尝试使用此代码从行文件夹中获取 JSON 并进行解析。

 //Get Data From Text Resource File Contains Json Data.

        InputStream inputStream = getResources().openRawResource(R.raw.localjsonfile);

        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

        int ctr;
        try {
            ctr = inputStream.read();
            while (ctr != -1) {
                byteArrayOutputStream.write(ctr);
                ctr = inputStream.read();
            }
            inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Log.v("Text Data", byteArrayOutputStream.toString());
        try {

            // Parse the data into jsonobject to get original data in form of json.  
            JSONObject jObject = new JSONObject(
                    byteArrayOutputStream.toString());

            JSONArray jArray = jObject.getJSONArray("Monday");
            String  time="";
            String class ="";
            String room ="";

            ArrayList<String[]> data = new ArrayList<String[]>();
            for (int i = 0; i < jArray.length(); i++) {
                time= jArray.getJSONObject(i).getString("time");
                class= jArray.getJSONObject(i).getString("class");
                 room= jArray.getJSONObject(i).getString("room");

                data.add(new String[] {time, class,room});
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

查看此以获取有关 JSON 解析的帮助,有关 JSON 解析的更多示例,请阅读本文

于 2013-01-12T20:17:51.997 回答