繁体   English   中英

如何将json从特定的数组字符串解析为数组对象?

[英]How to parse json from the specific array string to array object?

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

有可能这样分裂吗?

您可以结合使用String#splitArray#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格式。

列表周围的引号使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的字符串,那么您将需要一个额外的步骤来手动解析它。 例如

var string = jsonObj.data.myStatus;
string = `[${string}]`;
string = string.replace(/ +/g, ',');
jsonObj.data.myStatus = JSON.parse(string);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM