對于某些原因,我想使用 sqlite 作為 sqlite 的替代品我可以使用 room db,創建一個名為首選項的表,其結構如下
| 鍵 | 價值 |
| 鍵 1 | 值 1 |
| 鍵 2 | 值2 |
這種方法的問題是值列只能是文本,但我想存盤文本/數字
| 鍵 | 價值 | 型別 |
| 鍵 1 | 值 1 | 字串 |
| 鍵 2 | 值2 | 國際|
根據型別,我可以手動使用 Integer.parse(stringValue) ..
但這看起來像我在重新發明輪子
還有其他我無法掌握的方法嗎?
uj5u.com熱心網友回復:
如果您的資料型別未定義,您可以使用 JSON 來存盤您的資料,而不是自己存盤資料型別,并確定您需要執行哪個決議函式。
在您的示例中,該值變為 JSON 編碼的字串。因此,您可以存盤任何資料型別,決議它只需一步,您不必關心資料型別。
例如,
|Key |Value |
|aStringVariable |"Hello" |
|anIntVariable |1 |
|aBooleanVariable |true |
當您從資料庫中檢索 JSON 資料時,您只需要使用一個函式來決議 JSON 資料,并在您存盤資料時使用一個函式將資料編碼為 JSON。
您還沒有提到您使用的是哪種語言,假設 Java,您可以使用 GJson - https://www.javatpoint.com/how-to-convert-string-to-json-object-in-java。
由于您不知道資料的結構,因此在將 JSON 轉換為物件時可以使用映射。似乎所有流行的 Java 庫都支持這一點。
這是一個鏈接,其中提供了有關如何使用 gson 和 jackson(以及其他一些)將JSON 資料決議和解決議為映射的更多詳細資訊 - Convert a JSON String to a HashMap
uj5u.com熱心網友回復:
不知道為什么你不能使用 SharedPreferences 但是如果你想存盤和檢索原始型別,你可以在保存時使用 String 并在檢索時決議它。鑰匙 | someValue 存盤為字串。
讀取此值時,如果您知道自己的期望,則可以將其決議為該特定型別。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/382494.html
標籤:安卓 sqlite android-sqlite 共享偏好 android-room
