用於轉義 JSON 的 T-SQL 中 STRING_ESCAPE() 的反轉

馬克Z。

我有一些不幸的格式錯誤的 JSON,其中內部 JSON 對象(輸出值)是 ESCAPED,並阻止被正確讀取。

例子:

DECLARE @jsonContent nvarchar(max) = '{"output":"{\n\"latest_activity\": \"2021-12-04T08:32:19.343228\"\n}"}'

SQL 服務器似乎不喜歡這樣 - 下面返回 NULL

  SELECT JSON_VALUE(@jsonContent, '$.output.latest_activity') AS latest_activity

但是,通過用雙引號替換轉義的雙引號,以下得到了想要的結果:

  SELECT CAST(
            JSON_VALUE(
                REPLACE(
                    JSON_VALUE(@jsonContent, '$.output')
                    , '\"', '')
                , '$.latest_activity')
            AS datetime2(7))
        AS [latest_activity]

有沒有更好的方法來完成這項工作,並處理其他轉義字符?

我希望與內置的 STRING_ESCAPE 函數相反,但不存在。

查理臉

這個 JSON 沒有格式錯誤,它只是字符串化的 JSON。您需要使用 獲取output屬性JSON_VALUE,然後JSON_VALUE再次使用

DECLARE @jsonContent nvarchar(max) = '{"output":"{\n\"latest_activity\": \"2021-12-04T08:32:19.343228\"\n}"}';

SELECT JSON_VALUE(JSON_VALUE(@jsonContent, '$.output'), '$.latest_activity');

數據庫<>小提琴

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章