![](/img/trans.png)
[英]Android: what is the best way to store JSON data offline for the app in android?
[英]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.