记得来杭面试时,有家公司的面试主管问了这样一个js问题:不使用JSON.parse()如何把json字符串格式化成json?说实话我当时特别的纳闷,有了JSON.parse(),为啥还要问这样的问题,根本就没有实际意义,所以就没有思考就回了一句,不知道,没有处理过。

因为心里面一直没有了解到面试官的用意,所以一直以来也是比较轻视这个问题,自然也没有真正的想过实现方案。但是这个问题又经常冒出来,直到我意识到自己当年的年轻气盛,同时揣摩了面试官的用意:通过这个问题来考察我的应变能力以及字符串数据的处理能力。

今天就来说说,如何实现。其实只要用心思考一下,这个问题还是很好回答的:json字符串的格式是统一的,两边的花括号,里面是用‘‘,’’分开的键值对,键值对是‘‘:’’分开。特征点我们都找到了,那么思路也有了,使用replace正则替换掉两边的花括号,如果key里面有“””或“’”一并替换,然后使用split把字符串分割成数组,然后遍历循环数组,对每个item再使用split分割成数组,把下标0作为新的json 的key,下标1作为新的json的val,这样,JSON格式化就完成了。

上代码:

<!DOCTYPE html>
<html lang=”en”>
<head>
<meta charset=”UTF-8″>
<meta name=”viewport” content=”width=device-width, initial-scale=1.0″>
<title>Document</title>
</head>
<body>
<script>
let xx = ‘{“a”:1,”b”:2}’;
let xxArr =xx.replace(/{/g,””).replace(/}/g,””).replace(/\”/g,””).replace(/\’/g,””).split(“,”);
let xxJson={};
for(item in xxArr){
console.log(item,xxArr[item]);
let itm = xxArr[item].split(‘:’);
console.log(itm[0])
xxJson[itm[0]] = itm[1];
}
console.log(xxJson);
</script>
</body>
</html>

以上就是前端面试:不使用JSON.parse()如何把json字符串格式化成json?的全部内容,欢迎交流!