You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 20:27:04