将json数据格式化显示
1 function repeat(s, count) { 2 return new Array(count + 1).join(s) 3 } 4 5 function formatJson(json) { 6 var i = 0, 7 il = 0, 8 tab = " ", 9 newJson = "", 10 indentLevel = 0, 11 inString = false, 12 currentChar = null; 13 for(i = 0, il = json.length; i < il; i += 1) { 14 currentChar = json.charAt(i); 15 switch(currentChar) { 16 case '{': 17 case '[': 18 if(!inString) { 19 newJson += currentChar + "\n" + repeat(tab, indentLevel + 1); 20 indentLevel += 1 21 } else { 22 newJson += currentChar 23 } 24 break; 25 case '}': 26 case ']': 27 if(!inString) { 28 indentLevel -= 1; 29 newJson += "\n" + repeat(tab, indentLevel) + currentChar 30 } else { 31 newJson += currentChar 32 } 33 break; 34 case ',': 35 if(!inString) { 36 newJson += ",\n" + repeat(tab, indentLevel) 37 } else { 38 newJson += currentChar 39 } 40 break; 41 case ':': 42 if(!inString) { 43 newJson += ": " 44 } else { 45 newJson += currentChar 46 } 47 break; 48 case ' ': 49 case "\n": 50 case "\t": 51 if(inString) { 52 newJson += currentChar 53 } 54 break; 55 case '"': 56 if(i > 0 && json.charAt(i - 1) !== '\\') { 57 inString = !inString 58 } 59 newJson += currentChar; 60 break; 61 default: 62 newJson += currentChar; 63 break 64 } 65 } 66 return newJson 67 } 68 function getFormatData(json) { 69 var json = json+""; 70 if(json.indexOf('{')==-1 && json.indexOf('[')==-1) { 71 return json; 72 }else{ 73 return(formatJson(json)); 74 } 75 76 }
通过调用getFormatData(json)就可以实现json数据显示格式化。