Ionic Angular中使用SQLite的JSON1扩展提示无json_object函数怎么办
报错原因
no such function: json_object 报错是因为你当前项目使用的SQLite运行版本未启用JSON1扩展:json_object是SQLite 3.9.0版本加入JSON1扩展后才支持的内置函数,移动端默认集成的原生SQLite、以及大部分基础版SQLite插件都不会默认开启该扩展。
可用解决方案
- 方案1:使用
@ionic-enterprise/sqlite插件
Ionic官方维护的企业级SQLite插件,默认编译时已开启JSON1扩展,支持所有SQLite JSON相关函数,安装后直接替换原有插件的导入路径即可使用,兼容现有SQLite操作逻辑。 - 方案2:使用
cordova-sqlite-ext社区扩展插件
社区维护的增强版SQLite Cordova插件,默认内置JSON1、FTS5等常用扩展,适配Ionic Angular项目,不需要额外修改编译配置即可直接使用json_object等JSON函数。 - 方案3:JS层手动组装JSON(无需更换插件)
如果你不想修改现有依赖,可以先查询原始结构化数据,在业务代码层手动组装为JSON格式,小数据量场景下性能损耗可忽略,示例代码如下:// 原有SQL查询逻辑不变,不使用json_object函数 const queryRes = await this.sqlite.executeSql('SELECT id, title, create_time FROM your_table', []); const jsonResult = []; for (let i = 0; i < queryRes.rows.length; i++) { const row = queryRes.rows.item(i); jsonResult.push({ id: row.id, title: row.title, createTime: row.create_time }); } // jsonResult即为所需的JSON格式数据
注意事项
- 更换SQLite插件前请先完全移除原有插件及相关缓存,避免类名、方法名冲突导致的运行异常
- 升级SQLite依赖前请做好本地持久化数据备份,避免版本兼容问题导致的数据丢失
内容的提问来源于stack exchange,提问作者user9913710
相关产品推荐
相关产品推荐

