2011-11-13 43 views
1

我從服務器下載JSON數據,我想將它們保存在Android手機中的文件。保存JSON對象到一個文件在手機

如何與外部存儲辦呢?當我保存它們時,我也想在文件中搜索特定數據。有沒有比外部存儲更好的方法嗎?

//parse json data 
try{ 
    JSONArray jArray = new JSONArray(result); 
    JSONObject json_data = null; 
    category = new String[jArray.length()]; 
    name = new String[jArray.length()]; 
    date = new String[jArray.length()]; 
    content = new String[jArray.length()]; 

    for(int i=0;i<jArray.length()+2;i++){ 
     HashMap<String, String> map = new HashMap<String, String>(); 

     if(i==0){ 
      if(category8 == "All"){ 
       map.put("id", "5"); 
       map.put("name", "    All Posts"); 
       map.put("latitude", ""); 
       map.put("longitude", ""); 
       map.put("date", ""); 
       map.put("content", ""); 
       mylist.add(map); 
      } else { 
       json_data = jArray.getJSONObject(i); 

       category[i] = json_data.getString("category"); 
       map.put("id", "5"); 
       map.put("name", "    "+category[i]); 
       map.put("latitude", ""); 
       map.put("longitude", ""); 
       map.put("date", ""); 
       map.put("content", ""); 
       mylist.add(map); 
      } 
     } else if(i<jArray.length()+1) { 
      json_data = jArray.getJSONObject(i-1); 

      id = json_data.getInt("post_id"); 
      name[i-1] = json_data.getString("username"); 
      latitude = json_data.getDouble("latitude"); 
      longitude = json_data.getDouble("longitude"); 
      date[i-1] = json_data.getString("post_date"); 
      content[i-1] = json_data.getString("post_content"); 

      map.put("id", String.valueOf(id)); 
      map.put("name", name[i-1] + " wrote:"); 
      map.put("latitude", "Latitude: " + latitude); 
      map.put("longitude", "Longitude: " + longitude); 
      map.put("date", "Date: " + date[i-1]); 
      map.put("content", content[i-1]); 
      mylist.add(map); 
     } 

     if(i==jArray.length()+1) { 
      map.put("id", "5"); 
      map.put("name", ""); 
      map.put("latitude", ""); 
      map.put("longitude", ""); 
      map.put("date", ""); 
      map.put("content", ""); 
      mylist.add(map); 
     } 
    } 
} catch(JSONException e1) { 
    Toast.makeText(getBaseContext(), "No posts found" ,Toast.LENGTH_LONG).show(); 
} catch (ParseException e1) { 
    e1.printStackTrace(); 
} 

回答

2

JSON的需求,以從中獲取的信息進行解析。因此,每次需要從中獲取信息時,保存JSON請求並解析它通常是一個糟糕的主意。

相反,你要分析它一次,得到您想要的信息,並保存它們的地方,你可以很容易地訪問它們。在哪裏以及如何保存它們與您想要使用它的方式不同:

  • 如果您打算廣泛搜索它或只需要它的某些部分信息,那麼數據庫應該是您的最佳選擇。否則,如果你只是想存儲幾個值,你可能想選擇一個更簡單的格式來更快地解析它(比如CSV)。

此外,你說你想將這些東西存儲在外部存儲上。一般來說:將屬於您的應用程序的東西存儲在外部存儲上是一個壞主意。然而,有一些情況下是有意義的:

  • 你的應用程序想要的共享某些事情(和你不希望使用ContentProvider
  • 你的應用程序需要大量文件的哪些不能存儲在內部存儲器中。

請記住,保存在外部存儲上的每個文件都可以被操縱!另外,您不能依賴外部存儲,因爲有些用戶可能沒有。

在上述其他情況下,use the internal storage是個好主意。

1

您可以使用內部存儲爲好,但如果你談論的是大量的數據和大量的搜索,使用SQLite database,集成在Android平臺。