Sla*_*ion 3 java android dictionary sharedpreferences kotlin
我需要以SharedPreferences
这样的方式将数据保存到我有这样一个对象的地方:
{
"days": [
{
"exercises": [
{
"name": "Bench Press",
"sets": 3,
"reps": 8
},
{
"name": "Skull Crushers",
"sets": 3,
"reps": 8
},
{
"name": "Flys",
"sets": 3,
"reps": 8
}
]
},
{
"exercises": [
{
"name": "Bench Press",
"sets": 3,
"reps": 8
},
{
"name": "Skull Crushers",
"sets": 3,
"reps": 8
},
{
"name": "Flys",
"sets": 3,
"reps": 8
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
我需要从对象中拉出并添加到对象中。我知道你不能将地图保存到SharedPreferences
. 我开始认为我最好的选择是使用,ObjectOutputStream
但我不确定这是否是使用内部存储器的最佳选择。我想我只是在寻找有关我最好的选择的指导。
编辑:从Advice-Dog
所说的来看,我认为我最好的选择是使用gson
. 这是否意味着当我想(例如)将另一个练习添加到“天”的第二个索引时,我将首先从首选项中获取对象,将其转换gson
为对象,然后添加练习,然后将其转换回来对gson
,然后覆盖的偏好?我并不是说这不好,我只是想知道这是否应该做以及是否可取。
在 Android 中保存更复杂的类型时,我建议使用gson
. Gson 是 Google 的 JSON 解析库,即使您不使用 JSON,也可以将其转换Objects
为 JSON 字符串并轻松存储。
例如,您可以将您的列表Objects
转换为String
这样的。
val list : List<MyObject> // ... add items to your list
// Convert to JSON
val string = gson.toJson(list)
// Store it into Shared Preferences
preferences.putString("list", string).apply()
Run Code Online (Sandbox Code Playgroud)
然后你可以很容易地把它放回这样的列表中。
// Fetch the JSON
val string = preferences.getString("list", "")
// Convert it back into a List
val list: List<MyObject> = gson.fromJson(string, object : TypeToken<List<MyObject>>() {}.type)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2233 次 |
最近记录: |