前端json格式化輸出函式
阿新 • • 發佈:2020-08-13
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; },