JavaScript算法问题:尝试实现一个JSON解析函数以更漂亮的格式输出字符串
我很清楚npm包中存在JavaScript算法问题:尝试实现一个JSON解析函数以更漂亮的格式输出字符串,javascript,json,Javascript,Json,我很清楚npm包中存在JSON.parse和JSON.stringify和prettier两种格式。但由于某些原因,我仍然必须手工完成。将其视为一个编码面试问题,请不要仅仅因为我可以使用JSON.parse和JSON.stringify而关闭此问题,正如我所说的,存在此约束。这个问题不是这个问题的重复 这是一个字符串“['foo',{bar:['baz',null,1.0,2]}]” 我想实现一个函数来返回一个字符串,该字符串表示具有适当标识的json对象 i、 e.输出字符串应为 [
JSON.parse
和JSON.stringify
和prettier
两种格式。但由于某些原因,我仍然必须手工完成。将其视为一个编码面试问题,请不要仅仅因为我可以使用JSON.parse
和JSON.stringify
而关闭此问题,正如我所说的,存在此约束。这个问题不是这个问题的重复
这是一个字符串“['foo',{bar:['baz',null,1.0,2]}]”
我想实现一个函数来返回一个字符串,该字符串表示具有适当标识的json对象
i、 e.输出字符串应为
[
"foo",
{
"bar":
[
"baz",
null,
1.0,
2
]
}
]
这是我的尝试
函数printJSON(str){
设空格=[];
让输出=“”;
str.split(“”).forEach(char=>{
开关(字符){
案例“{”:
案例“[”:
空格。按(“”);
输出+=char+'\n'+空格。连接('');
打破
案例“}”:
案例']':
空格。pop();
输出+='\n'+空格。连接('')+字符;
打破
案例',':
输出+=char+'\n'+空格。连接('');
打破
违约:
输出+=字符;
打破
}
});
控制台日志(输出);
返回输出
}
但是,输出格式与中的略有不同
[
"foo",
{
bar:[ // What about this, since you also need to add a carriage return after the colon:
function printJSON(str) {
let spaces = [];
let output = '';
str.split('').forEach(char => {
switch (char) {
case '{':
case '[':
spaces.push(' ');
output += char + '\n' + spaces.join('');
break;
case ':':
output += char + '\n' + spaces.join('');
break;
case '}':
case ']':
spaces.pop();
output += '\n' + spaces.join('') + char;
break;
case ',':
output += char + '\n' + spaces.join('');
break;
default:
output += char;
break;
}
});
console.log(output);
return output
}
let string = "['foo', {bar:['baz',null,1.0,2]}]";
printJSON(string);
[
“福”,
{
酒吧:[ // 既然您还需要在冒号后添加回车符,那么该怎么办