作为最近发现 NoSQL 文档存储 (namley CouchDB) 简单之美的人,当需要持久存储简单对象或小型数组时,我发现自己非常想使用 Json 序列化程序将此数据存储为 JSON 字符串共享的偏好。我看到的优势是:
- 没有增加复杂性,因为(在我的项目中)我已经为我的 REST API 提供了一个 JSON 框架,可以轻松转换 JSON/对象
- 我还认为:复杂性较低,因为我可以只使用 POJO 而不必手动处理键/值
- 与 Java serilization 或 Androids parcable 相比,它或多或少是一种通用格式,即使对于人类也易于理解,并且易于通过不同的框架进行解析
- 使用正确的工具可以轻松处理数据模型更改和必须迁移配置的更新情况(例如,忽略未知属性并在 Jackson 中设置新的默认值)
- 再次使用正确的工具,可以在一行代码中完成序列化:
mapper.writeValueAsString(myObject);
我看到的缺点:
- 如果使用舒适的序列化方式(例如 Jackson 中的数据绑定(bind)),速度会变慢 - 但我不确定这在“保存配置”用例中有什么作用
- 需要稍微多一点的空间——我想这也可以忽略不计
我知道这种方法只适用于合理的小数据(但我想这同样适用于一般的 SharedPreferences)并且如果这仅用于“保存配置”或类似的用例,则性能影响可以忽略不计写入/读取稀疏。
我正在寻找在描述的场景中支持/反对这种方法的论据,或者寻找我忽略或可能出现的问题。
最佳答案
在 SharedPreferences
中存储小数据对象没有什么坏处。
但是,您应该记住一件事,即 SharedPreferences
不能跨多个进程正常工作。因此,如果您计划跨进程使用 SharedPreferences,则应避免使用它们。
关于java - 在 Android 的 SharedPreferences 中将对象存储为 JSON 字符串是否是一种不好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21700785/