478

Possible Duplicate:
How can I beautify JSON programmatically?

I know how to generate JSON from an object using JSON.stringify, or in my case the handy jquery-json from google code (https://github.com/krinkle/jquery-json).

Now this works fine, but the output is hard to read for humans. Is there an easy way / function / whatever to output a neatly formatted json file?

This is what I mean:

JSON.stringify({a:1,b:2,c:{d:1,e:[1,2]}}); 

gives..

"{"a":1,"b":2,"c":{"d":1,"e":[1,2]}}"

I'd like something like this instead:

{
 "a":1,
 "b":2,
 "c":{
    "d":1,
    "e":[1,2]
 }
}

E.g. with newlines and tabs added. It's much easier to read for larger documents.

I'd like to do this ideally without adding any huge libraries - e.g. not prototype or YUI or whatever.

Bhargav Rao
  • 45,811
  • 27
  • 120
  • 136
Ben Clayton
  • 78,728
  • 25
  • 118
  • 125

1 Answers1

1057

JSON.stringify takes more optional arguments.

Try:

 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

From:

How can I beautify JSON programmatically?

Should work in modern browsers, and it is included in json2.js if you need a fallback for browsers that don't support the JSON helper functions. For display purposes, put the output in a <pre> tag to get newlines to show.

swrobel
  • 3,867
  • 2
  • 31
  • 40
Cristian Sanchez
  • 29,155
  • 10
  • 55
  • 62
  • 9
    Isn't this answer a bit inaccurate given the OP wrote his beautified version with the `"e":[1,2]` all on one line? Is it possible to mix indented & non-indented JSON with stringify? – chamberlainpi Jun 07 '16 at 04:53
  • 92
    Just remember to put it inside something like
     to get new lines.
    – tymtam Jul 17 '16 at 22:56
  • https://github.com/Phrogz/NeatJSON and https://npm.io/package/json-beautify privide some more control & options for programmatic stringification of JSON. – iislucas May 10 '22 at 09:55