I am trying to display json in a readable format, in a new window. I've got a button and when you click a new tab appears with the json inside. However, in the new window the json is still not formatted, it appears as a plain text. In the console.log
, however, it is formatted properly. I don't understand why it's different.
$('.showRawJson').click(function () {
$.getJSON('somelink', function (json) {
var myjson = JSON.stringify(json, null, 2);
// In the console the json is well formatted
console.log(myjson);
var x = window.open();
x.document.open();
// Here in the new tab the json is NOT formatted
x.document.write(myjson);
x.document.close();
});
});
I am trying to display json in a readable format, in a new window. I've got a button and when you click a new tab appears with the json inside. However, in the new window the json is still not formatted, it appears as a plain text. In the console.log
, however, it is formatted properly. I don't understand why it's different.
$('.showRawJson').click(function () {
$.getJSON('somelink', function (json) {
var myjson = JSON.stringify(json, null, 2);
// In the console the json is well formatted
console.log(myjson);
var x = window.open();
x.document.open();
// Here in the new tab the json is NOT formatted
x.document.write(myjson);
x.document.close();
});
});
Share
Improve this question
edited Dec 30, 2014 at 13:19
meskobalazs
16k2 gold badges42 silver badges63 bronze badges
asked Dec 30, 2014 at 12:37
georgegeorge
3,2215 gold badges36 silver badges55 bronze badges
2
-
For starters you have a mismatched
"
, but I assume that's due to editing your code for the question. – Etheryte Commented Dec 30, 2014 at 12:41 - @user3793865 can you show your json output – Priyank Commented Dec 30, 2014 at 12:44
2 Answers
Reset to default 15Put it into a pre
tag, and it will keep the whitespace during display. Your code changed a bit:
var myjson = JSON.stringify(json, null, 2);
console.log(myjson);
var x = window.open();
x.document.open();
x.document.write('<html><body><pre>' + myjson + '</pre></body></html>');
x.document.close();
Try something like JSON.stringify
and <pre>
tag.
To use this, you would need to turn your string into an object then back into a string:
Example :
http://jsfiddle/yEez8/
var jsonStr = $("pre").text();
var jsonObj = JSON.parse(jsonStr);
var jsonPretty = JSON.stringify(jsonObj, null, '\t');
$("pre").text(jsonPretty);