一 使用原生 JSON.stringify 实现
html
textarea name="" id="myTA" cols="30" rows="10"></textarea>
<script>
<var myTA = document.getElementById("myTA");
myTA.value = JSON.stringify({"aaa":123,"bbb":456}, null, 4)
script>
</
二 自己写函数实现
js
// Notes:
// - json2.js is not needed if browser supports JSON.stringify and JSON.parse natively
// - jQuery is only used to place the results
// colon;冒号,pad;填补
var formatJson = function(json, options) {
var reg = null,
= "",
formatted = 0,
pad PADDING = " "; // one can also use '\t' or a different number of spaces
// optional settings
= options || {};
options // remove newline where '{' or '[' follows ':'
options.newlineAfterColonIfBeforeBraceOrBracket =
options.newlineAfterColonIfBeforeBraceOrBracket === true ? true : false;
// use a space after a colon
options.spaceAfterColon = options.spaceAfterColon === false ? false : true;
// begin formatting...
// make sure we start with the JSON as a string
if (typeof json !== "string") {
= JSON.stringify(json);
json
}// parse and stringify in order to remove extra whitespace
// json = JSON.stringify(JSON.parse(json));可以除去多余的空格
= JSON.parse(json);
json = JSON.stringify(json);
json
// add newline before and after curly braces
= /([\{\}])/g;
reg = json.replace(reg, "\r\n$1\r\n");
json
// add newline before and after square brackets
= /([\[\]])/g;
reg = json.replace(reg, "\r\n$1\r\n");
json
// add newline after comma
= /(\,)/g;
reg = json.replace(reg, "$1\r\n");
json
// remove multiple newlines
= /(\r\n\r\n)/g;
reg = json.replace(reg, "\r\n");
json
// remove newlines before commas
= /\r\n\,/g;
reg = json.replace(reg, ",");
json
// optional formatting...
if (!options.newlineAfterColonIfBeforeBraceOrBracket) {
= /\:\r\n\{/g;
reg = json.replace(reg, ":{");
json = /\:\r\n\[/g;
reg = json.replace(reg, ":[");
json
}if (options.spaceAfterColon) {
= /\:/g;
reg = json.replace(reg, ": ");
json
}
$.each(json.split("\r\n"), function(index, node) {
var i = 0,
= 0,
indent = "";
padding
if (node.match(/\{$/) || node.match(/\[$/)) {
= 1;
indent else if (node.match(/\}/) || node.match(/\]/)) {
} if (pad !== 0) {
-= 1;
pad
}else {
} = 0;
indent
}
for (i = 0; i < pad; i++) {
+= PADDING;
padding
}
+= padding + node + "\r\n";
formatted += indent;
pad
});
return formatted;
};
var json = {};
// display formatted JSON (as JSON object)
= {
json : {
a: [
aa1,
2,
: "abc", bbb: "defgh", ccc: 987 },
{ aaa100, 200, 300, { one: 1, two: "ii", three: "Three" }, 1000]
[
],: "xyz",
bb: 777
ccc
},: ["qqq", "www", "eee"],
b: "hello",
c: 12345
d
};$("#formattedJson1").text(formatJson(json));
// display formatted JSON (from JSON string)
=
json '{ "a": { "aa": [ 1, 2, { "aaa": "abc",' +
' "bbb": "defgh", "ccc": 987 }, [ 100, ' +
'200, 300 , { "one": 1, "two" : "ii", "three" ' +
': "Three" }, 1000 ]' +
" ], " +
' "bb": "xyz", "ccc": 777 }, "b": [ "qqq", "www", ' +
'"eee" ], "c": "hello", "d": 12345 }';
$("#formattedJson2").text(formatJson(json));