簡體   English   中英

存儲已解析的json數據的最佳方法是什么

[英]What is the best way to store parsed json data

我想問一下,如何存儲json數據。 我有一個JSON文件,我使用JSON庫進行了解析。 現在我從文件中獲取數據。 但是我想存儲它們,並稍后再顯示。

問題是,什么是存儲數據的最佳方法? 並且甚至值得存儲它們嗎?

我在考慮sql數據庫,因為它簡單易用。 官方的android文檔只有幾個例子,到目前為止,我已經搜索過,但是如果您有更好的指南,請告訴我。

謝謝! :)

EDIT1:

好的,我有帶有數據的json文件,可以使用RAW資源將其添加到我的應用程序中。 這些數據不會改變,它的配方列表,我不必下載。 我可以這樣讀取數據:

InputStream is = mContext.getResources().openRawResource(R.raw.package_01);
Writer writer = new StringWriter();
char[] buffer = new char[1024];
try {
    Reader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
    int n;
    while ((n = reader.read(buffer)) != -1) {
        writer.write(buffer, 0, n);
    }
is.close();
//catchblock
.....
}

然后我可以像這樣解析經過JSONLibrary處理的數據:

try {
    //representing []JSON
    JSONArray jsonArray = new JSONArray(writer.toString());

    if(jsonArray != null){...}
...}

我將HashMap發送到ListView,其中包括名稱和ID。 並且,如果用戶單擊ListView / GridView項,則會啟動新的Activity,該Activity顯示所有已解析的數據。 我需要將解析后的數據與ID進行匹配。

文件中大約有200個配方。 顯示活動屏幕時,將在活動開始時解析數據。 我不確定,每次啟動應用程序時解析數據是否是個好主意。

那么,每次啟動應用程序時都可以解析數據嗎? 如果是的話,如何使解析的數據保持“在一起”? 我應該使用HashMap嗎?

我希望我能澄清我的問題:)感謝您的幫助。

EDIT2:

因此,在我知道該怎么做之后,我嘗試了使用HashMap的建議解決方案。 問題出在哪里,我得到了失敗的活頁夾異常 我有使用Base64編碼的圖像,這意味着我的字符串很長,例如此處 那是很多數據,有限制:

The Binder transaction buffer has a limited fixed size, currently 1Mb, which is shared by all transactions in progress for the process. 我試圖將其保存到

Set<String> titles = new HashSet<String>();

然后轉到SharedPreferences但每個配方的數據混合在一起。 **所以,這又來了,我應該將數據保存到SQLite數據庫中還是可以使用另一個有效的選擇? ** 謝謝!

實際上,這取決於許多因素,例如:您現在有多少數據,以后將有多少,數據有多復雜。 您可以使用簡單的方法,例如數組或哈希圖。 或像數據庫一樣復雜的東西。 您需要考慮要嘗試做的事情,並找到最簡單的解決方案。 如果您要保留數據,則可以使用共享首選項,數據庫以及內部/外部存儲( 此處概述了這些選項)。

沒有更多信息,很難說出該怎么做。 保持簡單。 如果要從Web服務獲取JSON,則可以使用ArrayList或HashMap來存儲數據,而不是持久保存數據。 它更易於實現和完成工作。

編輯:

要回答您的問題:是的,每次使用HashMap並進行解析都可以。 您只有200個字段,並且沒有圖像,因此解析所需的時間最少。 無論您如何存儲數據,都將進行某種程度的“解析”。 例如,如果將數據存儲在數據庫中,則將仍然必須提取數據並將其放入HashMap中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM