【发布时间】:2019-05-28 05:31:31
【问题描述】:
我需要将数据保存到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
}
]
}
]
}
我需要从对象中提取并添加到对象中。我知道您无法将地图保存到SharedPreferences。我开始认为我最好的选择是使用ObjectOutputStream,但我不确定这是否是使用内部存储器的最佳选择。我想我只是在寻找关于我的最佳选择的指导。
编辑:根据Advice-Dog 所说,我认为我最好的选择是使用gson。那么这是否意味着当我想(例如)将另一个练习添加到“天”的第二个索引时,我将首先从首选项中获取对象,将其从 gson 转换为对象,然后添加练习,然后将其转换回gson,然后覆盖首选项?我并不是说这很糟糕,我只是想知道这是否应该做以及是否可取。
【问题讨论】:
-
这个数据结构有一个问题,就是不能改变天数 - 而
SharedPreferences是为了保留应用程序设置(简单数据);不要被滥用为数据库。
标签: java android dictionary kotlin sharedpreferences