- 类别:
转换函数、 半结构化和结构化数据函数 (类型转换)
TO_JSON¶
将 VARIANT 值转换为包含该值的 JSON 表示形式的字符串。
语法¶
实参¶
expr保存有效 JSON 信息的 VARIANT 类型的表达式。
返回¶
返回类型 VARCHAR 的值。
如果输入为 NULL,则该函数返回 NULL。
使用说明¶
如果输入为 NULL,则输出也是 NULL。如果输入是包含 JSON null 的 VARIANT,则返回值是字符串
"null"(即放在双引号内的单词“null”)。请参阅以下示例。JSON 对象(也称为“字典”或“哈希”)是一组 无序 的键值对。TO_JSON 生成字符串时,该字符串中键值对的顺序是不可预测的。
TO_JSON 和 PARSE_JSON(几乎)是相反或互逆的函数。
PARSE_JSON 函数接受一个字符串作为输入,并返回一个 JSON 兼容的 VARIANT。
TO_JSON 函数接受一个 JSON 兼容的 VARIANT 并返回一个字符串。
如果 X 是包含有效 JSON 的字符串,则以下内容(从概念上讲)为真:
X = TO_JSON(PARSE_JSON(X));例如,以下情况(从概念上讲)为真:
'{"pi":3.14,"e":2.71}' = TO_JSON(PARSE_JSON('{"pi":3.14,"e":2.71}'))但是,这些函数并不完全互逆,因为:
空字符串和只有空格的字符串不会互逆。例如,
PARSE_JSON('')的返回值为 NULL,但TO_JSON(NULL)的返回值为 NULL,而不是倒数''。TO_JSON 生成的字符串中键值对的顺序是不可预测的。
TO_JSON 生成的字符串可以比传递给 PARSE_JSON 的字符串具有更少的空格。
例如,以下是等效的 JSON,但不是等效的字符串:
{"pi": 3.14, "e": 2.71}{"e":2.71,"pi":3.14}
示例¶
以下示例使用 TO_JSON 函数。
插入 VARIANT 值并使用查询将其转换为字符串¶
创建并填写表。该 INSERT 语句使用该 PARSE_JSON 函数在表的 v 列中插入一个 VARIANT 值。
查询数据并使用该 TO_JSON 函数将 VARIANT 值转换为字符串。
使用 PARSE_JSON 和 TO_JSON 函数处理 NULL 值¶
以下示例显示了 PARSE_JSON 和 TO_JSON 如何处理 NULL 值:
比较 PARSE_JSON 和 TO_JSON¶
以下示例演示了 PARSE_JSON 和 TO_JSON 函数之间的关系。
此示例创建了一个具有 VARCHAR 列和 VARIANT 列的表。INSERT 语句插入一个 VARCHAR 值,且 UPDATE 语句生成一个与该 VARCHAR 值对应的 JSON 值。
该查询表明 TO_JSON 和 PARSE_JSON 在概念上是互逆函数:
但是,这些函数并不完全是互逆的。键值对的空格或顺序差异可能会阻止输出与输入匹配。例如: