Я добился некоторого успеха, используя JSON_MODIFY
для добавления fieldErrors: []
и его содержимого к корню другого объекта { data: []}
, так что результирующий объект выглядит примерно так: {data: [], fieldErrors: []}
.
Проблема в том, что когда я добавляю @variable, он включает в себя несколько escape-символов.
Я ожидаю этого: {"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 к ответу?