以 JSON 或 SQLITE (Android) 存储数据

Posted

技术标签:

【中文标题】以 JSON 或 SQLITE (Android) 存储数据【英文标题】:Storing data in JSON or in SQLITE (Android) 【发布时间】:2019-05-30 05:00:13 【问题描述】:

我正在构建一个需要在运行时检索数据对象的应用程序。每个对象都具有相同的结构(一对字符串、布尔值和数组)。给定对象的大小相对较小(100-1000 字节)。用户不会在运行时添加/删除/修改元素,因此不会对数据执行写操作。我希望在最终版本中,对象的数量肯定会低于 5000。我需要根据条件搜索给定对象或过滤对象。

我的问题是使用 JSON 文件是否明智?我喜欢 JSON 原生支持我的所有数据类型,甚至可以从 android Studio 轻松编辑。一旦我把它放到我的资产文件夹中,它就会与应用程序无缝编译。

另一方面,SQLITE 具有作为数据库的优势,因此搜索、排序等比使用 JSON 文件更容易。

【问题讨论】:

看起来数据库方法在这里更好。如果是 Json - 您必须阅读整个文件才能找到特定对象。 两者都可以:sqlite.org/json1.html(假设 Android 使用的 sqlite 库是在启用该模块的情况下编译的) 【参考方案1】:

将数据存储在 json 文件中没有任何问题。它易于解析,并且是存储少量数据(如设置)的常用方法。它在存储大量数据方面的缺点是它不提供可搜索性,并且要获得同样高效的访问权限需要大量工作。

您可能想要拆分差异并查看基于文档的数据库。它们基本上存储 JSON,但仍然允许查询、处理缓存等。当然,这是假设您拥有大量数据。

【讨论】:

【参考方案2】:

为什么不用 sharedpreferences 和 Gson,你可以将你的 json 保存为对象列表并实现你的搜索方法

在你的情况下,我认为使用文件是最好的主意,对数据库的访问时间比文件的访问时间长得多

【讨论】:

以上是关于以 JSON 或 SQLITE (Android) 存储数据的主要内容,如果未能解决你的问题,请参考以下文章

Android SQLite, JSON, List 用于存储常量对象

如何在android中将arraylist或vector插入SQLite数据库?

JSON文件VS SQLite android

Async Json 提要晚于 AsyncTask 完成以从 sqlite DB 加载数据。如何同步它们或更好的解决方案?

如何将 JSON 结构转换为 XML android

每次在android中解析json更好吗