首页 > 技术文章 > 将json数据格式化显示

xueyuting 2017-01-17 16:31 原文

 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数据显示格式化。

推荐阅读