JSON对象:
{
"data": {
"myStatus": "[1 2 21 0 50 0 0 0],[2 1 3 1 50 0 0 0]"
},
"success": true
}
当我们转换为json对象时,返回myStatus只是字符串。 想要转换/解析为数组..
通常它应该在json对象中返回,如下所示。
var jsonObj= JSON.parse(<abovestring>);
jsonObj.data.myStatus[0] => [1 2 21 0 50 0 0 0];
jsonObj.data.myStatus[0][0] => 1
jsonObj.data.myStatus[0][1] => 2
jsonObj.data.myStatus[0][2] => 21
有可能像这样分开吗?
答案 0 :(得分:2)
您可以使用String#split
和Array#map
来执行此操作:
let str = "[1 2 21 0 50 0 0 0],[2 1 3 1 50 0 0 0]";
let arr = str
.split(',')
.map(item => item.slice(1, -1))
.map(item => item.split(' '));
console.log(arr);
但这是非常脏的方法,如果字符串格式发生变化,则容易出错。您应该尝试修复JSON格式。
答案 1 :(得分:0)
列表周围的引号使JSON.parse
将其视为字符串,因为它实际上是一个字符串。
尝试通过删除引号将其更改为有效数组,在数组周围添加[]
方括号,并在元素之间添加,
逗号,例如:
{
"data": {
"myStatus": [[1, 2, 21, 0, 50, 0, 0, 0], [2, 1, 3, 1, 50, 0, 0, 0]]
},
"success": true
}
如果你无法控制你的json字符串并且它必须包含data.myStatus
的字符串,那么你需要一个额外的步骤来手动解析它。 e.g
var string = jsonObj.data.myStatus;
string = `[${string}]`;
string = string.replace(/ +/g, ',');
jsonObj.data.myStatus = JSON.parse(string);