如何写入现有的JSON文件?

时间:2018-04-13 10:32:07

标签: android arrays json

我需要一些帮助才能写入现有的json文件。在这个例子中,我可以使用GSON或json解析数据并从中读取数据。我这样做是为了通过屏幕上显示的id过滤结果。所以它抓住添加并搜索我的900多个视频列表,然后给出选择的视频。唯一的问题是我不想显示它们我想保存它们:)

final Button button = findViewById(R.id.buttonx);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            // load json parse json and grab fields...
            // then write to new file!

            try {
                //Load File
                BufferedReader jsonReader = new BufferedReader(new InputStreamReader(getResources().openRawResource(R.raw.movielist)));
                StringBuilder jsonBuilder = new StringBuilder();
                for (String line = null; (line = jsonReader.readLine()) != null;) {
                    jsonBuilder.append(line).append("\n");
                }

                //Parse Json
                JSONTokener tokener = new JSONTokener(jsonBuilder.toString());
                JSONArray jsonArray = new JSONArray(tokener);

                ArrayList<String> fields = new ArrayList<String>();
                for (int index = 0; index < jsonArray.length(); index++) {
                    //Set both values into the listview
                    JSONObject jsonObject = jsonArray.getJSONObject(index);
                    String series = jsonObject.getString("id");

                    if (series.equals(tvId.getText())) {
                        fields.add(jsonObject.getString("movie"));
                        fields.add(jsonObject.getString("year"));
                        fields.add(jsonObject.getString("duration"));
                        fields.add(jsonObject.getString("director"));
                        fields.add(jsonObject.getString("image"));
                        fields.add(jsonObject.getString("id"));
                    }

                }

            } catch (FileNotFoundException e) {
                Log.e("jsonFile", "file not found");
            } catch (IOException e) {
                Log.e("jsonFile", "ioerror");
            } catch (JSONException e) {
                Log.e("jsonFile", "error while parsing json");
            }


            Toast.makeText(DetailActivity.this, "The following movie has been saved " + tvId.getText(), Toast.LENGTH_LONG).show();

            // Toast.makeText(DetailActivity.this, "This features is not working", Toast.LENGTH_LONG).show();

        }
    });

我的问题是,一旦我获得了我希望能够将其写入现有JSON文件的数据。我的api是18所以不能使用FILEwriter我试图让应用程序几乎所有人都可以使用。正确方向上的一点很棒。

1 个答案:

答案 0 :(得分:0)

如果要写入原始文件夹中打包的文件,则必须先将其复制到本地文件系统。项目中原始目录中包含的资源将打包在APK中,并且在运行时无法写入。考虑查看内部或外部数据存储API。 Update raw resources is not possible