format(str){ var stack = []; //棧-用於括號匹配 var tmpStr = ''; //新格式化JSON字符串 var len = str.length; //原始JSON長度 //遍歷每一個字符 for (let i = 0; i < len; i++) { //當遇到結構塊起始結構 if (str[i] == '{' || str[i] === '[') { //起始結構后面直接換行 tmpStr += str[i] + "\n"; //入棧 stack.push(str[i]); //這里的意思是結構塊起始的下一行開始就會有一個縮進,縮進量與遇到的結構塊起始符個數成正比1:1 tmpStr += "\t".repeat(stack.length); } //當遇到結構塊結束符 else if (str[i] == ']' || str[i] === '}') { //因為本身JSON格式是固定的,所以括號一定是成對的,這里先不考慮錯誤的json數據 //遇到結束符就退棧, stack.pop(); //結束符本身輸出到下一行,並減少一個縮進 tmpStr += "\n"+"\t".repeat(stack.length) + str[i]; } //當遇到逗號的時候 else if (str[i] == ',') { //逗號后方直接換行,以及下一行的縮進處理 tmpStr += str[i] + "\n" + "\t".repeat(stack.length); } else { //其他字符直接復制 tmpStr += str[i]; } } return tmpStr; },