2014-02-18 2 views
9

Привет, у меня есть проблема, потому что мой json не отображается как форматированный json.jquery display formatted json

в моей веб-странице у меня есть <pre></pre> тег, он cointains JSon строку:

JSon пример:

{"status": "OK", "output": {"pools": [{"stats": {"bytes_used": 0, "objects": 0, "kb_used": 0}, "name": "data", "id": 0}, {"stats": {"bytes_used": 0, "objects": 0, "kb_used": 0}, "name": "metadata", "id": 1}, {"stats": {"bytes_used": 0, "objects": 0, "kb_used": 0}, "name": "rbd", "id": 2}], "stats": {"total_used": 63330648, "total_space": 125604864, "total_avail": 62274216}}} 

я использовать JQuery скрипт для форматирования:

var jsonPretty = JSON.stringify($(this).text(), null, '\t'); 
$(this).text(jsonPretty); 

но ITSN не работает, результат:

"{\"status\": \"OK\", \"output\": {\"pools\": [{\"stats\": {\"bytes_used\": 0, \"objects\": 0, \"kb_used\": 0}, \"name\": \"data\", \"id\": 0}, {\"stats\": {\"bytes_used\": 0, \"objects\": 0, \"kb_used\": 0}, \"name\": \"metadata\", \"id\": 1}, {\"stats\": {\"bytes_used\": 0, \"objects\": 0, \"kb_used\": 0}, \"name\": \"rbd\", \"id\": 2}], \"stats\": {\"total_used\": 63330648, \"total_space\": 125604864, \"total_avail\": 62274216}}}" 

Как я могу отформатировать его, чтобы отобразить хороший форматированный json?

ответ

34

JSON.stringify принимает объект, но вы передаете ему строку. Чтобы использовать этот подход, вы должны превратить строку в объект затем обратно в строку:

http://jsfiddle.net/yEez8/

var jsonStr = $("pre").text(); 
var jsonObj = JSON.parse(jsonStr); 
var jsonPretty = JSON.stringify(jsonObj, null, '\t'); 

$("pre").text(jsonPretty);