2012-07-06 20 views
7

Eventuali duplicati:
JSON pretty print using JavaScriptPrettify JSON array in JavaScript

Sto lavorando su un progetto che verrà utilizzato per aiutare ad analizzare e comprendere gli array JSON dai futuri sviluppatori di una piattaforma . Mi riferisco alla brillante pagina di Graph Explorer di Facebook, seen here, e voglio produrre il nostro array in un array di interruttori di riga, con indentazione di tabulazione e allineamento, esattamente come fa con l'explorer.

Gli array vengono emessi a un textarea e, per questo motivo, ritengo di riscontrare problemi con interruzione di riga e tabulazione. Ho anche provato a usare la libreria di prettify, ma senza fortuna.

Esempio:

{"outcome" : "success", "result" : {"name" : "messaging-sockets", "default-interface" : "external", "include" : [], "socket-binding" : {"messaging" : {"name" : "messaging", "interface" : null, "port" : 5445, "fixed-port" : null, "multicast-address" : null, "multicast-port" : null}, "messaging-throughput" : {"name" : "messaging-throughput", "interface" : null, "port" : 5455, "fixed-port" : null, "multicast-address" : null, "multicast-port" : null}}}, "compensating-operation" : null} 

A:

{ 
    "outcome":"success", 
    "result":{ 
     "name":"messaging-sockets", 
     "default-interface":"external", 
     "include":[ 

     ], 
     "socket-binding":{ 
     "messaging":{ 
      "name":"messaging", 
      "interface":null, 
      "port":5445, 
      "fixed-port":null, 
      "multicast-address":null, 
      "multicast-port":null 
     }, 
     "messaging-throughput":{ 
      "name":"messaging-throughput", 
      "interface":null, 
      "port":5455, 
      "fixed-port":null, 
      "multicast-address":null, 
      "multicast-port":null 
     } 
     } 
    }, 
    "compensating-operation":null 
} 
+0

Vedere anche http://stackoverflow.com/questions/2614862/how-can-i-beautify-json-programmatically –

+0

C'è anche http://www.jsonlint.com/ - se quello ' d aiutarti riducendo il carico di lavoro! :) –

+0

@limelights Sembra un buon strumento, ma gli array saranno sempre validi, quindi non abbiamo bisogno di testarli, semplicemente visualizzarli in modo più ordinato. –

risposta

27

È possibile utilizzare JSON.stringify:

JSON.stringify(jsonobj,null,'\t') 

Vedere le demo.

UPDATE: Se non si dispone di jsonobj, ma hanno stringa JSON, quindi prima di utilizzare la funzione stringify, convertire la stringa JSON per oggetto JSON da questa linea:

jsonobj = JSON.parse(jsonstring); 
+0

Non funziona - l'output è come '" {\ "streamtype \": \ "returnAll \"} ', come una stringa, senza interruzioni di riga o tab. –

+1

@RyanBrodie È necessario passare' Object', non a 'String ', ecco perché hai ottenuto tali risultati Per convertire una stringa in oggetto, usa' JSON.parse (yourstring) ', e poi passa alla funzione' JSON.stringify'. Quindi devi fare questo: 'JSON.stringify (JSON. parse (yourstring), null, '\ t') ' – Engineer

+0

Grazie @engineer! –

0

provare questo solution, ho anche utilizzato nel mio progetto

+0

Grazie per la risposta, ma la soluzione @ Engineer ha funzionato meglio –

+0

La funzione nativa funziona bene w/o necessità di dipendenze extra. 'var str = JSON.stringify (obj, null, 2);' –