最近项目中需要将json格式的字符串解析并格式化,研究实现如下:
//递归遍历属性解析
formatJsonStr = (str) => {
if (str === null || str === "{}" || str === undefined) {
return str;
}
try {
let json = JSON.parse(str);
for (let k in json) {
let kv = json[k];
try {
//数组
if (Array.isArray(kv)) {
try {
//json字符串处理
let sub = kv.toString().replace("[", "").replace("]", "").split(",");
for (let i = 0; i < sub.length; i++) {
if (typeof (JSON.parse(sub[i])) == "object") {
sub[i] = this.formatJsonStr(sub[i]);
}
}
json[k] = sub;
} catch (e) {
}
continue;
}
if (typeof (JSON.parse(kv)) == "object") {
json[k] = this.formatJsonStr(kv);
}
} catch (e2) {
}
}
return json;
} catch (e) {
}
return str;
}
注意:
1.参数是json结构的字符串
2.返回值是json对象
如需格式化输出,配合JSON.stringify使用