将文件JSON写入资源文件夹Android

时间:2014-02-07 20:54:52

标签: android json

我有一个文件(ex.json),我从中获取数据

{
  "Adres": "ул. Курчатова, 10",
  "Comment": "В здании вокзала, на 1 и на 2 этаже",
  "Dobavil": "Сергей",
  "location": {
    "latitude": 48.474721,
    "longitude": 35.008587
  },
  "objectId": "sVjaCW0JV4"
}

这样做

public void update()                    
            StringBuffer sb = new StringBuffer();
            BufferedReader br = null;
            try {
                br = new BufferedReader(new InputStreamReader(getAssets().open("ex.json")));
                String temp;
                while ((temp = br.readLine()) != null)
                    sb.append(temp);
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    br.close(); // stop reading
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            String myjsonstring = sb.toString();
            try {
                JSONObject jsonObjMain = new JSONObject(myjsonstring);
                JSONArray jsonArray = jsonObjMain.getJSONArray("results");
                for (int i = 0; i < jsonArray.length(); i++) {
                    JSONObject jsonObj = jsonArray.getJSONObject(i);
                    String adres = jsonObj.getString("Adres");
                    String comment = jsonObj.getString("Comment");
                    String dobavil = jsonObj.getString("Dobavil");                                      
                    JSONObject c = jsonArray.getJSONObject(i);
                    JSONObject location = c.getJSONObject("location");
                    String lat = location.getString("latitude");
                    String lon = location.getString("longitude");                   
                }

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

我想知道您是否可以将数据附加到文件中? 如何编写字符串和位置数组? 使用文本文件可能更容易吗?

1 个答案:

答案 0 :(得分:2)

  

我想知道您是否可以将数据附加到文件中?

资产在运行时是只读的。欢迎您将数据写入内部存储(例如getFilesDir())。当您读入数据时,请检查内部存储中是否有修改后的副本,如果存在则使用它。否则,就像你现在所做的那样,回退到从资产加载数据。

  

如何编写字符串和位置数组?

使用JSONObjectJsonWriter。或者,以某种其他格式(例如,XML,CSV)对数据进行编码。或者,使用数据库。