我有一些不幸的格式錯誤的 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] 删除。
我来说两句