遇到后端返回的json是这样的,我再前端需要处理这个json并遍历
{
"roleRight": "[{\"id\":0,\"role\":\"\",\"itemId\":456,\"funTitle\":\"协议处理\",\"funLink\":\"-\",\"funType\":null,\"headApi\":\"-\",\"fullApi\":null}]",
}
直接使用JSON.parse的时候会报一个错误
SyntaxError: Unexpected token i in JSON at position 17
研究了下找到解决的办法就是转义
//转义函数
function transSpecialChar(pageStr) {
if (pageStr != undefined && pageStr != "" && pageStr != 'null') {
pageStr = pageStr.replace(/\r/g, "\\r");
pageStr = pageStr.replace(/\n/g, "\\n");
pageStr = pageStr.replace(/\t/g, "\\t");
pageStr = pageStr.replace(/\\/g, "\\\\");
pageStr = pageStr.replace(/"\[{/g, "[{");
pageStr = pageStr.replace(/}]"/g, "}]");
// pageStr = pageStr.replace(/("")+/g, '"');
pageStr = pageStr.replace(/"{"/g, "{\"");
pageStr = pageStr.replace(/"}"/g, "\"}");
pageStr = pageStr.replace(/}}"/g, "}}");
}
return pageStr;
}
直接调用这个方法就可以!!!
var str = transSpecialChar('{"roleRight":"[{\"id\":0,\"role\":\"\",\"itemId\":456,\"funTitle\":\"协议处理\",\"funLink\":\"-\",\"funType\":null,\"headApi\":\"-\",\"fullApi\":null}]"}')
//转义后再解析就不会报错
var sessions = JSON.parse(str)
console.log(sessions.length);
for (const key in sessions) {
if (Object.hasOwnProperty.call(sessions, key)) {
const element = sessions[key];
console.log(element)
}
}