Android从url写json文件

时间:2014-01-30 11:26:08

标签: java android json

我正在研究JSON。我编写的代码可以解析JSON并显示listview(图像和文本)。 现在我想将我的JSON保存在文件(json.txt)中。 这是我的代码。我尝试保存JSON,但是当我在json.txt文件上调试它时只保存了第一个数据,但我在JSON中有20个数据 如果有人知道解决方案,请帮助.......

    jsonparser = new JSONParser();

        JSONObject jsonobject = jsonparser.getJSONfromURL(URL);
        try {

            jsonarray = jsonobject.getJSONArray("data");

            for (int i = 0; i < jsonarray.length(); i++) {
                jsonobject = jsonarray.getJSONObject(i);

                HashMap<String, String> map = new HashMap<String, String>();

                map.put("journal", jsonobject.getString(KEY_journal));
                map.put("image", jsonobject.getString(KEY_image));
                map.put("title", jsonobject.getString(KEY_title));
                map.put("description",
                        jsonobject.getString(KEY_description));
                map.put("JournalID", jsonobject.getString(KEY_JournalID));
                map.put("pubDate", jsonobject.getString(KEY_pubDate));
                map.put("statID", jsonobject.getString(KEY_statID));

                Content cont = new Content(jsonobject.getString("journal"),
                        jsonobject.getString("image"),
                        jsonobject.getString("title"),
                        jsonobject.getString("pubDate"),
                        jsonobject.getString("description"),
                        jsonobject.getString("JournalID"),
                        jsonobject.getString("statID"));
                contents.add(cont);




                    yourFile = new File("/sdcard/json.txt");

                    try {
                        writer = new OutputStreamWriter(
                                new FileOutputStream(yourFile), "UTF-8");
                        writer.write(jsonobject.toString());
                        writer.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    } finally {
                        if (writer != null) {
                            try {
                                writer.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                    }

3 个答案:

答案 0 :(得分:0)

以附加模式打开文件。

new OutputStreamWriter(new FileOutputStream(yourFile,true), "UTF-8");

答案 1 :(得分:0)

为从URL检索到的JSONObject使用单独的变量,并使用一个变量来循环数据数组:

    jsonparser = new JSONParser();

        JSONObject jsonfromurl = jsonparser.getJSONfromURL(URL);
        try {

            jsonarray = jsonfromurl.getJSONArray("data");

            for (int i = 0; i < jsonarray.length(); i++) {
                JSONObject jsonobject = jsonarray.getJSONObject(i);
                HashMap<String, String> map = new HashMap<String, String>();

                map.put("journal", jsonobject.getString(KEY_journal));
                map.put("image", jsonobject.getString(KEY_image));
                map.put("title", jsonobject.getString(KEY_title));
                map.put("description",
                        jsonobject.getString(KEY_description));
                map.put("JournalID", jsonobject.getString(KEY_JournalID));
                map.put("pubDate", jsonobject.getString(KEY_pubDate));
                map.put("statID", jsonobject.getString(KEY_statID));

                Content cont = new Content(jsonobject.getString("journal"),
                        jsonobject.getString("image"),
                        jsonobject.getString("title"),
                        jsonobject.getString("pubDate"),
                        jsonobject.getString("description"),
                        jsonobject.getString("JournalID"),
                        jsonobject.getString("statID"));
                contents.add(cont);




                    yourFile = new File("/sdcard/json.txt");

                    try {
                        writer = new OutputStreamWriter(
                                new FileOutputStream(yourFile), "UTF-8");
                        writer.write(jsonfromurl.toString());
                        writer.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    } finally {
                        if (writer != null) {
                            try {
                                writer.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                    }

答案 2 :(得分:0)

您应该遵循与here相同的风格。从我所看到的,他们实际上将字节写入FileOutputStream,而你尝试写一个字符串。根据{{​​3}}。

,FileOutputStream只接受字节

请尝试writer.write(jsonobject.toString().getBytes());