gpt4 book ai didi

sql-server - JSON_MODIFY 附加包含带有转义字符而不是 JSON 字符串的 JSON 的变量

转载 作者:行者123 更新时间:2023-12-01 12:13:17 24 4
gpt4 key购买 nike

我使用 JSON_MODIFY 取得了一些成功追加 fieldErrors: []和它的内容到另一个对象的根 { data: []}这样生成的对象看起来像这样:{data: [], fieldErrors: []} .

问题是,当我附加一个@variable 时,它​​包含一堆转义字符。

我希望这个:{"name":"PosTitle","status":"the field is messed up, yo"}
但是,我明白了:["{\"name\":\"PosTitle\",\"status\":\"the field is messed up, yo\"}"]}

    DECLARE
@fieldErrors nvarchar(max) ='{}'
,@jsonResponse nvarchar(max) = '
{
"data": [
{
"PosTitle": "",
"PosCode": "86753",
}
]
}
'

--define the fields that are bad
set @fieldErrors = JSON_MODIFY(JSON_MODIFY(@fieldErrors, '$.name', 'PosTitle'), '$.status', 'the field is messed up, yo')
print @fieldErrors

--RESULT, this looks great:
--{"name":"PosTitle","status":"the field is messed up, yo"}



-- append fieldErrors to the response

set @jsonResponse = JSON_MODIFY(@jsonResponse, 'append $.fieldErrors', @fieldErrors)
print @jsonResponse

--RESPONSE, this includes escape characters
/*
{
"data": [
{
"PosTitle": "",
"PosCode": "86753",

}
]
,"fieldErrors":["{\"name\":\"PosTitle\",\"status\":\"the field is messed up, yo\"}"]}


*/

为什么在将 fieldErrors 附加到响应时添加转义字符?

最佳答案

请去掉"PosCode": "86753",末尾的逗号因为这种方式不是有效的 JSON。

为了回答您的问题,您尝试添加存储在 @fieldErrors 中的字符串。这会导致添加转义字符。

反而,set @jsonResponse = JSON_MODIFY(@jsonResponse, '$.fieldErrors', JSON_QUERY(@fieldErrors))应该产生你正在寻找的结果。

请注意,当您使用 append 时你说的JSON_MODIFY它正在向数组添加一个值(这可能是也可能不是您需要的,但不是您所期望的)。

关于sql-server - JSON_MODIFY 附加包含带有转义字符而不是 JSON 字符串的 JSON 的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50241629/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com