1

在我的应用程序中,我将创建一个包含此类信息的 JSON 文件:

{
   "sites":{
      "site":[
         {
            "src":"/Users/redoddity/Library/Application%20Support/iPhone%20Simulator/6.1/Applications/EE5BB071-A217-4C8D-99BA-5B6F392889A6/Documents/Sito3.html",
            "name":"Sito3",
            "expiryDate":"29 Ago 2013"
         },
         {
            "src":"/Users/redoddity/Library/Application%20Support/iPhone%20Simulator/6.1/Applications/EE5BB071-A217-4C8D-99BA-5B6F392889A6/Documents/Sito2.html",
            "name":"Sito2",
            "expiryDate":"29 Ago 2013"
         }
      ]
   }
}

(这是我为 iPhone 应用程序创建的 JSON)。现在我需要为 Android 应用程序创建一个 JSON 文件。

第一个问题:如何在 Android 中创建 JSON,在这里我发现:create json in android,但这将创建一个没有数组的 JSON(你可以在我的 JSON 中看到我有一个站点数组)?

第二个问题:您可以看到在我的 JSON 中有我在 iPhone 的 Documents 文件夹中下载的 html 文件的路径,现在在 Android 中我使用以下代码存储了 html:

File file = getFileStreamPath(titleText + ".html");
    if (!file.exists()) {
          try {
        OutputStreamWriter out = new OutputStreamWriter(openFileOutput(titleText + ".html", 0));
        out.write(html);
        out.close();
        } catch (IOException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
        }
    } else {
          Log.d("FILE", "Il file esiste");
          alert.show();
}

我怎么知道这个文件的存储路径?

谢谢

4

2 回答 2

3

使用 getFileStreamPath

File file = getFileStreamPath(titleText + ".html");

从文档

返回文件系统上存储使用 openFileOutput(String, int) 创建的文件的绝对路径。

JSONObject root = new JSONObject();
JSONArray arr = new JSONArray();
root.put("key",(Object)arr);
于 2013-08-02T10:28:58.827 回答
0

我使用这种方法在 Android 中创建 JSON,其中包含内部数据数组,以及数组外部的一些元数据。我相信你可以破解它以适应。

    public final static JSONObject writeListJSON(ArrayList aGroupedList,
        String username) throws Exception {

    ArrayList aList = (ArrayList) aGroupedList.get(0);
    JSONObject obj = new JSONObject();
    try {
        String sub_id = (String) aList.get(14);

        obj.put("username",
                URLEncoder.encode(BtoCryptex.btoEncrypt(username), "UTF-8"));
        obj.put("proj_id", "BT");
        obj.put("inner_count", "" + aGroupedList.size());
        obj.put("device", android.os.Build.MODEL);
        obj.put("version", android.os.Build.VERSION.RELEASE);
        obj.put("protocol_id",
                URLEncoder.encode((String) aList.get(13), "UTF-8"));
        obj.put("date", URLEncoder.encode((String) aList.get(2), "UTF-8"));
        obj.put("time", URLEncoder.encode((String) aList.get(10), "UTF-8"));
        obj.put("endtime",
                URLEncoder.encode((String) aList.get(15), "UTF-8"));
        obj.put("complete",
                URLEncoder.encode((String) aList.get(16), "UTF-8"));
        obj.put("placename",
                URLEncoder.encode((String) aList.get(4), "UTF-8"));
        obj.put("gridref",
                URLEncoder.encode((String) aList.get(5), "UTF-8"));
        obj.put("sub_id", URLEncoder.encode(sub_id, "UTF-8"));
        for (int i = 0; i < aGroupedList.size(); i++) {
            JSONObject innerobj = new JSONObject();
            ArrayList bList = (ArrayList) aGroupedList.get(i);
            innerobj.put("species_name",
                    URLEncoder.encode((String) bList.get(3), "UTF-8"));
            innerobj.put("count",
                    URLEncoder.encode((String) bList.get(6), "UTF-8"));
            innerobj.put("breed",
                    URLEncoder.encode((String) bList.get(7), "UTF-8"));
            innerobj.put("sensitive",
                    URLEncoder.encode((String) bList.get(9), "UTF-8"));
            innerobj.put("comment",
                    URLEncoder.encode((String) bList.get(11), "UTF-8"));
            obj.put("INNER" + (i + 1), innerobj);
        }

    } catch (JSONException e) {
        e.printStackTrace();
    }
    // System.out.println(obj.toString());
    return obj;
}
于 2013-08-02T10:36:14.467 回答