问题标签 [sqlite-json1]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
272 浏览

sqlite - 有什么办法可以在路径 Json1 Sqlite 中转义点

似乎如果我有钥匙test1.test2,就无法逃脱这个点来按原样使用这个钥匙。

表达:

会导致

0 投票
1 回答
5805 浏览

json - 来自 sqlite3 的 JSON 字段

我在 sqlite3 集合中有一个 json 字段。我的架构看起来像:

我了解 go-sqlite 接口不明确支持 json 数据类型。但是,我的 json 非常简单,因为所有字段都是 json 数组,例如;

所以完整的记录可能是:

使用包:

我能够提取我的 json 字段

也就是说,似乎 sqlite3 json 被存储在一个 unicode 字符串(?)中作为一系列......字节?......我可以使用 String 模块转换为字符串。我还对“+”连接操作感兴趣,所以我可以为下游的另一个应用程序制作一个查询+字符串+查找+东西。

但是,我真的很想将这一切都捆绑在 JSON 中,并利用 JSON 解组/解析而不是我的临时自定义打印。当我尝试:

它打印一个真正的整数数组。如何在启用 json 的类型定义中嵌入 strings.Join(sounds []uint8) 声明 + 函数转换组合?

此外,我不清楚如何在 json 为 null [] 或 true NULL 的情况下使用 []uint8 字符串,并进一步使其对这些具有鲁棒性。

一些参考:

0 投票
1 回答
3179 浏览

php - 如何在 PHP 中为“SQLite3”启用“JSON1”扩展?

我想JSON1在 PHP7 中尝试 SQLite 的扩展,但默认情况下未启用。

因此,我按照这些说明php_sqlite3.dll编译了一个启用了扩展的新版本,但是当我尝试启动 PHP 时出现错误;JSON1

我究竟做错了什么?


更多信息

替换php_sqlite3.dll为我的版本后,SQLite3该类不再适用于 PHP,例如。这行 PHP 代码;

给出这个错误;

我通过做来编译新php_sqlite3.dll的;

然后我用上面创建的文件夹替换php_sqlite3.dll了我的 Windows PHP文件夹。/ext

0 投票
0 回答
546 浏览

php - 如何在 SQLite3 中启用扩展加载?

我想使用 SQLite3 的JSON1扩展,但是当我执行以下操作时;

我得到了错误;

文档说,出于安全原因,默认情况下禁用扩展加载,但可以通过事先调用 C 接口函数sqlite3_enable_load_extension()来启用。

如何调用该函数,或者是否有另一种方法可以从 PHP 加载 SQLite 扩展?

PS。json1.dll我使用 MinGW+Msys编译;

0 投票
1 回答
1100 浏览

sqlite - 带有 JSON1 的 Ubuntu 16.04 上的 SQLite

是否有使用 JSON1 扩展编译的 Linux/Ubuntu 的 SQLite 发行版。SQLite JSON1 页面上的说明仅解释了如何在编译后加载扩展 - 我想避免一个题外话。

0 投票
0 回答
1233 浏览

sqlite - 使用带有 SQLite/json1 扩展(追加、尾部)的数组

sqlite3 的 json1 扩展允许查询和操作 JSON 值(存储的 TEXT 字段)。我想将一个新元素附加到驻留在某个 JSON 值(在 SQLite 数据库中)内的 JSON 数组中。不幸的是,在使用动态大小的数组(长度未知)时,对 JSON 数组的支持似乎不是最佳的。

我有一个存储 JSON 值的简单表。

该表中将有 JSON 值,其中包含一个作为根节点的 JSON 数组,例如:

要附加到路径“$”处的数组(为简单起见),我可以发出以下查询:

这可行,但似乎相当可怕;我首先json_extract是数组,然后计算它的长度。然后将该长度连接成一个新的 JSON 路径表达式,然后将其反馈到json_insert以找到正确的位置。获取最后一个元素可以通过相同的方式完成:

这似乎很麻烦。我希望有类似$[-1]路径的东西,但这似乎不受支持。这可以在 SQLite 中以更优雅的方式解决吗?

0 投票
3 回答
1182 浏览

json - Sqlite:将新元素附加到现有数组

来自 sqlite3 文档

但是如何将新元素附加到数组中?

0 投票
2 回答
2603 浏览

json - 使用 JSON1 在 SQLite 中更新 JSON

SQLite JSON1 扩展有一些非常简洁的功能。但是,我无法弄清楚如何更新或插入单个 JSON 属性值。

这是一个例子

我正在使用此表来存储关键字搜索并记录在对象中发起搜索的位置locs。此数据库表中的示例条目如下所示

这里的位置对象属性是存储在别处的实际位置的索引。

现在想象以下场景

  • stackoverflow从位置索引“2”开始搜索。在这种情况下,我只想增加该索引处的值,以便在操作后读取相应的行

    id:1,lang:1,kwd:'stackoverflow',locs:'{"1":1,"2": 2 ,"5":1}'

  • 从以前未知的位置索引“7”开始搜索,stackoverflow在这种情况下,更新后的相应行必须读取

    id:1,lang:1,kwd:'stackoverflow',locs:'{"1":1,"2":1,"5":1, "7":1 }'

我不清楚这实际上是否可以做到。我尝试了一些类似的东西

这给出了错误消息error near json_set。对于任何能够告诉我如何/是否应该/可以完成的人,我将非常感激。

0 投票
0 回答
857 浏览

android - Android SQLite 在带有转义双引号的 TEXT 列中插入 JSON

我在一个 Android 应用程序中使用 SQLite,其中存储了一个记录用户情绪的表。表架构如下所示

与 Postgres 不同,SQLite 没有专用的jsonb存储类型。去引用

向后兼容性限制意味着 SQLite 只能存储 NULL、整数、浮点数、文本和 BLOB 值。无法添加第六个“JSON”类型。

SQLite JSON1 扩展文档

在 SQLite 命令行处理器上,我可以使用一个简单的 INSERT 语句来填充这个表,比如这个

因为它接受字符串的单引号和双引号。

为了在我的 Hybrid Android 应用程序中完成相同的操作,我执行以下操作

它返回诸如{"P4":2}等之类的字符串。我的下一步如下

哪个有效。但是,在检查存储的值后,我发现实际上输入的是

除非我在这里误解了某些东西,否则底层ContentValues.putSQLiteDatabase.insert实现已经自行转义了引用的字符串。也许这是意料之中的,因为沿着这SQLiteDatabase.insert条路线走的好处ContentValues是可以防止 SQL 注入攻击。然而,在目前的情况下,它是一种障碍,而不是一种帮助。

除了通过执行原始 SQL 之外,execSQL还有另一种方法可以将 JSON 导入 SQLite 数据库表吗?


我应该补充一点,只需用单引号替换双引号

将无法工作,因为随后尝试从表中提取 JSON

将导致SQLite JSON1 扩展发出格式错误的JSON错误。

0 投票
1 回答
3331 浏览

sql - 使用 json_extract 在 JSON 数组中的所有对象中查找

json_extract 如何用于查看数组中的所有对象?如果您知道密钥,它会起作用,但我想查看每个对象并找到匹配的对象。

如何让它工作?