2011-12-30 71 views
2

我需要從在線數據庫獲取大量數據(比如7000條記錄)到android應用程序。雖然谷歌搜索,我知道大量的數據會導致JSON的內存問題,同時從字符串轉換。解決方案是在gson或jackson的幫助下轉換json。我有兩個問題如下如何從web服務中檢索大數據到Android,無需外部存儲

  1. 其他任何解決方案轉換JSON以避免內存不足問題。

  2. 我應該用xml格式獲取數據嗎?如果是的話,我能否解決內存不足?

請幫助我..我很緊急。

編輯:

String result = convertStreamToString(is); 

    JSONObject jObject = new JSONObject(result); // Only i am getting outofMemory Exception.. 


    private static String convertStreamToString(InputStream inputStream) 
     throws IOException { 
    ByteArrayOutputStream out = new ByteArrayOutputStream(); 
    InputStream in = new BufferedInputStream(inputStream); 
    byte[] buffer = new byte[1024]; 
    int n = 0; 
    try { 
     while (-1 != (n = in.read(buffer))) { 
      out.write(buffer, 0, n); 
     } 
    } finally { 
     out.close(); 
     in.close(); 
    } 
    return out.toString("UTF-8"); 
} 
+0

創建一個POJO類並使用JSON添加數據。在這種情況下,我認爲JSON不會造成內存不足。 – 2011-12-30 04:58:57

+0

有多少列7000條記錄?由於易於轉換爲對象,我更喜歡JSON over XML的數據傳輸。就數據負載而言,XML和JSON都佔用幾乎相同的內存。 – kosa 2011-12-30 05:03:44

+0

@thinksteep近15列。 – deepa 2011-12-30 05:05:13

回答

0

我認爲XML格式將允許您爲大量的數據。我正在開發一個項目,我在xml下載大約15000個數據,並且沒有內存問題。

+0

在我的Android應用程序的listview中顯示7000條記錄時,我是否會在這裏得到memoryissue? – deepa 2011-12-30 05:09:20

+0

我不確定那個寶貝,但是如果你的設備有足夠的能力執行那個加載的內存塊,那麼它不會引發這個錯誤。 – Android 2011-12-30 05:10:54

+0

我有45000條記錄我應該怎麼走 – Trikaldarshi 2013-07-22 11:19:17

0

您應該使用Jackson,因爲它是一個流處理器,您可以直接將任意大小的InputStream送入ObjectMapper.readValue()方法。只要記錄本身不太重要,那麼你應該能夠記住它們。也就是說,你可能不應該把它們放在內存中,你應該把它們放入數據庫並從那裏查詢它們。

+0

我在將字符串轉換爲json對象時發生outofmemory錯誤。傑克遜解決了我的錯誤嗎? – deepa 2011-12-30 05:58:16

+0

我不知道你是如何「將字符串轉換成json對象」,所以很難說出爲什麼你的內存不足。但是,從JSON轉換爲Java時,Jackson不應該耗盡內存。 – dmon 2011-12-30 06:06:14

+0

請檢查我的編輯部分在我的問題。 – deepa 2011-12-30 06:25:30