SQL 中的数据在单元格中包含一个长长的 JSON 字符串,类似于这样:
{
"Name": "Example",
"Results": [
{
"ResultId": 0,
"AnswerIds": "[1,2,33,4,5]"
},
{
"ResultId": 1,
"AnswerIds": "[2,3,4,55,6]"
}
]
}
我有一个替换 AnswerId 的列表:将所有 2 替换为 7,将所有 3 替换为 8
我怎样才能为此编写脚本?
我能够使用 crossapply 和 JSON_Query 隔离 AnswerId,但不确定如何着手替换一个数组中的多个更改。
最佳答案
const json = {
"Name": "Example",
"Results": [
{
"ResultId": 0,
"AnswerIds": "[1,2,33,4,5]"
},
{
"ResultId": 1,
"AnswerIds": "[2,3,4,55,6]"
}
]
}
json.Results.forEach((itm, index)=> {
const arr = JSON.parse(itm.AnswerIds);
const replacedArray = arr.map(num=>{
if(num === 2) return 7;
if(num === 3) return 8;
return num;
});
json.Results[index].AnswerIds = JSON.stringify(replacedArray);
})
console.log(json);
这就是我所做的,获取 json.Results 数组并使用 forEach 循环对其进行迭代。
然后您可以访问每个结果的 AnswerIds 对象。
由于 AnswerIds 的值是一个字符串,我们首先将其转换为一个数组。
然后我们使用映射遍历该数组,并进行替换。
您可能想阅读JS maps、JS foreach、JSON.parse、JSON.stringify强>
关于javascript - 如何在 SQL 中替换 json 字符串中的数字数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57615299/