Javascript:如何直接从对象生成格式化的易于阅读的JSON?

Ben*_*ton 345 javascript formatting json pretty-print

可能重复:
如何以编程方式美化JSON?

我知道如何使用JSON.stringify从对象生成JSON,或者在我的情况下从google代码(https://github.com/krinkle/jquery-json)生成方便的jquery-json .

现在这种方法很好,但输出很难为人类阅读.是否有简单的方法/功能/输出整齐格式的json文件?

这就是我的意思:

JSON.stringify({a:1,b:2,c:{d:1,e:[1,2]}}); 
Run Code Online (Sandbox Code Playgroud)

使..

"{"a":1,"b":2,"c":{"d":1,"e":[1,2]}}"
Run Code Online (Sandbox Code Playgroud)

我喜欢这样的东西:

{
 "a":1,
 "b":2,
 "c":{
    "d":1,
    "e":[1,2]
 }
}
Run Code Online (Sandbox Code Playgroud)

例如添加了换行符和标签.阅读更大的文档要容易得多.

我想在没有添加任何大型库的情况下理想地执行此操作 - 例如,不是原型或YUI或其他任何东西.

Cri*_*hez 773

JSON.stringify采用更多可选参数.

尝试:

 JSON.stringify({a:1,b:2,c:{d:1,e:[1,2]}}, null, 4); // Indented 4 spaces
 JSON.stringify({a:1,b:2,c:{d:1,e:[1,2]}}, null, "\t"); // Indented with tab
Run Code Online (Sandbox Code Playgroud)

从:

如何以编程方式美化JSON?

应该在现代浏览器中工作,并且如果您需要对不支持JSON帮助程序函数的浏览器进行回退,它将包含在json2.js中.出于显示目的,将输出放在<pre>标记中以显示要显示的换行符.

  • 只需记住将其放在像<pre>这样的内容中以获得新行. (43认同)
  • 这个答案有点不准确,因为OP用"e"写了他的美化版本:[1,2]`所有在一条线上?是否可以将缩进和非缩进JSON与stringify混合使用? (6认同)
  • 有没有办法在对象本身中添加新行? (3认同)
  • 如果您愿意,可以使用“white-space: pre”代替“&lt;pre&gt;”。 (2认同)