How can I beautify JSON programmatically?
Programmatic formatting solution:
The JSON.stringify
method supported by many modern browsers (including IE8) can output a beautified JSON string:
JSON.stringify(jsObj, null, "\t"); // stringify with tabs inserted at each level
JSON.stringify(jsObj, null, 4); // stringify with 4 spaces at each level
Demo: http://jsfiddle.net/AndyE/HZPVL/
This method is also included with json2.js, for supporting older browsers.
Manual formatting solution
If you don't need to do it programmatically, Try JSON Lint. Not only will it prettify your JSON, it will validate it at the same time.
pretty-print JSON using JavaScript
Pretty-printing is implemented natively in JSON.stringify()
. The third argument enables pretty printing and sets the spacing to use:
var str = JSON.stringify(obj, null, 2); // spacing level = 2
If you need syntax highlighting, you might use some regex magic like so:
function syntaxHighlight(json) {
if (typeof json != 'string') {
json = JSON.stringify(json, undefined, 2);
}
json = json.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) {
var cls = 'number';
if (/^"/.test(match)) {
if (/:$/.test(match)) {
cls = 'key';
} else {
cls = 'string';
}
} else if (/true|false/.test(match)) {
cls = 'boolean';
} else if (/null/.test(match)) {
cls = 'null';
}
return '<span class="' + cls + '">' + match + '</span>';
});
}
See in action here: jsfiddle
Or a full snippet provided below:
function output(inp) { document.body.appendChild(document.createElement('pre')).innerHTML = inp;}
function syntaxHighlight(json) { json = json.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>'); return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) { var cls = 'number'; if (/^"/.test(match)) { if (/:$/.test(match)) { cls = 'key'; } else { cls = 'string'; } } else if (/true|false/.test(match)) { cls = 'boolean'; } else if (/null/.test(match)) { cls = 'null'; } return '<span class="' + cls + '">' + match + '</span>'; });}
var obj = {a:1, 'b':'foo', c:[false,'false',null, 'null', {d:{e:1.3e5,f:'1.3e5'}}]};var str = JSON.stringify(obj, undefined, 4);
output(str);output(syntaxHighlight(str));
pre {outline: 1px solid #ccc; padding: 5px; margin: 5px; }.string { color: green; }.number { color: darkorange; }.boolean { color: blue; }.null { color: magenta; }.key { color: red; }
How can I beautify JSON programmatically in angular js?
There is a built in feature for filtering json {{Object | json }}
You can use the built in filter for your code
{{dataObject | json}}
Will beautify your json, give it a try.
Here is a working example:
http://plnkr.co/edit/DM1TbN3eXGngJaFgi6n6?p=preview
Javascript: How to generate formatted easy-to-read JSON straight from an object?
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.
How to style/format JSON response and display it in user readable format?
As the answer you have linked suggests, the JSON.stringify
function supports formatting JSON strings, which is how you should format JSON strings.
JSON.stringify(jsObj, null, "\t"); // stringify with tabs inserted at each level
JSON.stringify(jsObj, null, 4); // stringify with 4 spaces at each level
JSON.stringify output to div in pretty print way
Please use a <pre>
tag
demo : http://jsfiddle.net/K83cK/
var data = { "data": { "x": "1", "y": "1", "url": "http://url.com" }, "event": "start", "show": 1, "id": 50}
document.getElementById("json").textContent = JSON.stringify(data, undefined, 2);
<pre id="json"></pre>
Best way to make JSON pretty in Java
I think the best way beautify the json string is as follows using Jackson:
import com.fasterxml.jackson.databind.ObjectMapper;
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(yourObject)
How do I pretty-print existing JSON data with Java?
I think for pretty-printing something, it's very helpful to know its structure.
To get the structure you have to parse it. Because of this, I don't think it gets much easier than first parsing the JSON string you have and then using the pretty-printing method toString mentioned in the comments above.
Of course you can do similar with any JSON library you like.
Related Topics
What Exactly Is the Parameter E (Event) and Why Pass It to JavaScript Functions
Validation of File Extension Before Uploading File
Convert Special Characters to HTML in JavaScript
How to Define Two Angular Apps/Modules in One Page
What Is the Fastest or Most Elegant Way to Compute a Set Difference Using JavaScript Arrays
How to Fetch an Array of Urls with Promise.All
Square Brackets JavaScript Object Key
How to Convert a Float Number to a Whole Number in JavaScript
Declaring JavaScript Object Method in Constructor Function VS. in Prototype
How to Display All Methods of an Object
Chrome Extension Code VS Content Scripts VS Injected Scripts
Download JSON Object as a File from Browser
How to Reload Page Every 5 Seconds
Set a Callback Function to a New Window in JavaScript
Cannot Access CSSrules from Local CSS File in Chrome 64
Change Value of Input and Submit Form in JavaScript
How to Prevent an Http Request Just for a Favicon
Is There an Alternative Method to Use Onbeforeunload in Mobile Safari