2012-07-06 2 views
7

Possible en double:
JSON pretty print using JavaScriptPrettify JSON Array JavaScript

Je travaille sur un projet qui sera utilisé pour aider à analyser et à comprendre les tableaux JSON par les développeurs futurs d'une plate-forme . Je me réfère à la brillante page Graph Explorer de Facebook, seen here, et je veux sortir notre tableau dans un tableau de disjoncteurs et de disjoncteurs correctement tabulés, comme il le fait sur l'explorateur.

Les tableaux sont sortis à textarea, et pour cette raison, je pense que je rencontre des problèmes avec la rupture de ligne et le tabulation. J'ai aussi essayé d'utiliser la bibliothèque de prettify, mais sans chance.

Exemple:

{"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} 

Pour:

{ 
    "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

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

+0

Il y a aussi http://www.jsonlint.com/ - si c'est ça ' d vous aider en réduisant votre charge de travail! :) –

+0

@limelights Cela ressemble à un bon outil, mais les tableaux seront toujours valables, donc nous n'avons pas besoin de les tester, il suffit de les visualiser plus proprement. –

Répondre

27

Vous pouvez utiliser JSON.stringify:

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

Voir la demo.

MISE À JOUR: Si vous n'avez pas jsonobj, mais ont chaîne JSON, puis avant d'utiliser la fonction stringify, convertir la chaîne JSON objet JSON par cette ligne:

jsonobj = JSON.parse(jsonstring); 
+0

Ne fonctionne pas - la sortie est comme '" {\ "streamtype \": \ "returnAll \"} ', sous la forme d'une chaîne, sans saut de ligne ou tabulation –

+1

@RyanBrodie Vous devez passer' Object', pas un 'String ', c'est pourquoi vous avez de tels résultats.Pour convertir la chaîne en objet, utilisez' JSON.parse (yourstring) ', puis passez à la fonction' JSON.stringify', donc vous devez faire ceci: 'JSON.stringify (JSON. parse (yourstring), null, '\ t') ' – Engineer

+0

Merci @engineer! –

0

essayer cette solution, j'ai aussi utilisé ceci dans mon projet

+0

Merci pour la réponse, mais la solution de @ Engineer a fonctionné le mieux –

+0

Fonction native fonctionne très bien w/o besoin de dépendances supplémentaires. 'var str = JSON.stringify (obj, null, 2);' –