【发布时间】:2017-09-10 17:48:40
【问题描述】:
对于允许我的组织成员在他们的移动设备上查看数据的应用程序,我需要在设备上存储预先格式化的数据,以便他们也可以离线查看。他们如何通过 JSON 请求-响应获取数据。
响应格式如下(匿名 ofc):
[{
"firstname":"John",
"lastname":"Smith",
"group":"1",
"age":11,
"installed":"Ja",
"medical":"Is aan zijn linker zijde verlamd geweest.",
"notes":"Heimee. \r\nBeschermend opgevoed. \r\nTerug getrokken persoonlijkheid.",
"Insignes":["test", "Test2"],
"Parents":[]
},
{
"firstname":"Emely",
"lastname":"Watson",
"group":"33",
"age":14,
"installed":"Ja",
"medical":"",
"notes":"Test",
"Insignes":["Veilig & Gezond I","CWO II","CWO III","Kampeertechnieken & Pionieren"],
"Parents":[
{
"name":"ouder ouder",
"address":"op | 0000AA Amsterdam",
"phone1":"",
"phone2":"0612345678",
"mail":"example@google.com"
}]
}]
我已经阅读了一些关于如何最好地存储它的讨论:
Is it ok to save a JSON array in SharedPreferences?
How to save JSON Array in SharedPreferences?
Android: what is the best way to store JSON data offline for the app in android?
Android - how to add JSON object to sharedPreferences?
What is the advantage of Using SQLite rather than File?
通过阅读这些,我了解到 SharedPreference 文件比 sqlite 文件“更快”,但容易损坏。 SQLite 是一个数据库,由于数据来自一个数据库,因此我倾向于以牺牲处理速度为代价来使用它。
现在我只需要存储然后读取数据,除非“主服务器”上有更新,否则它不会发生变异,在这种情况下,我可能会擦除本地数据并重新填充它。在这些线程中,我读到将 JSON 存储在 sharedpreference 中很容易但很难阅读。
但是在阅读了这些(以及更多)讨论之后,我并没有更接近了解/决定存储我的 json 的最佳方式是什么。
非常感谢任何建议!
【问题讨论】:
-
嗯,为什么不只是一个普通的 JSON 文件呢?在这种情况下,您希望从
SharedPreferences或 SQLite 获得什么对您有帮助? -
支持CommonsWare! (如果我理解正确的话)。 @S.Holzhauer 在您的情况下,我只需将整个文件保存到文件系统。并从那里加载它。这种方法的代码会更少。
-
说实话,在阅读之后我得出的结论是这两个选项是公认的。 JSON 响应来自 HTTPS 请求,是否仍然可以将其存储为文件?那有多安全? @CommonsWare
-
@S.Holzhauer 您可以轻松地将 json 转换为字符串并保存。关于安全性,不是 sqlite,也不是首选项不会为存储的数据提供与保存到内部存储的文件相同的安全性。顺便说一句,sqlite db 和首选项 xml 保存在那里。默认情况下,用户无权访问内部存储。但是他可以根他的设备并访问它。因此,如果您需要提供安全性,您应该加密保存的数据。对于您的情况,保存和恢复文件是将 json 保存/恢复为字符串的更简单方法(在我个人看来),因为您正在其他地方处理它(如果您将其存储为 json)。
-
"是否仍然可以将其存储为文件?" ——嗯,嗯,是的。 “那有多安全?” -- 如果你把它存储在internal storage,它会相当安全。
标签: android json sqlite sharedpreferences android-storage