2012-07-06 35 views
7

thể trùng lặp:
JSON pretty print using JavaScripttô điểm JSON Mảng trong JavaScript

Tôi đang làm việc trên một dự án sẽ được sử dụng để giúp phân tích và hiểu mảng JSON bởi các nhà phát triển tương lai của một nền tảng . Tôi đang tham khảo trang Graph Explorer rực rỡ của Facebook, seen here và muốn xuất mảng của chúng tôi trong một mảng được xác định chính xác, được xác định chính xác và có ngắt dòng, giống như trên trình khám phá.

Các mảng được xuất thành textarea và vì lý do này, tôi nghĩ rằng tôi đang gặp sự cố với ngắt dòng và tabbing. Tôi cũng đã thử sử dụng thư viện prettify, nhưng không có may mắn.

Ví dụ:

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

Để:

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

Xem thêm http://stackoverflow.com/questions/2614862/how-can-i-beautify-json-programmatically –

+0

Còn có http://www.jsonlint.com/ - nếu đó ' d giúp bạn bằng cách giảm khối lượng công việc của bạn! :) –

+0

@limelights Điều đó trông giống như một công cụ tốt, nhưng các mảng sẽ luôn hợp lệ vì vậy chúng tôi không cần phải kiểm tra chúng, chỉ cần hình dung chúng gọn gàng hơn. –

Trả lời

27

Bạn có thể sử dụng JSON.stringify:

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

Xem demo.

UPDATE: Nếu bạn không có jsonobj, nhưng có chuỗi json, sau đó trước khi sử dụng chức năng stringify, chuyển đổi chuỗi json để đối tượng json bởi dòng này:

jsonobj = JSON.parse(jsonstring); 
+0

Không hoạt động - đầu ra giống như '" {\ "streamtype \": \ "returnAll \"} ', dưới dạng chuỗi, không có ngắt dòng hoặc tab. –

+1

@RyanBrodie Bạn cần phải chuyển' Đối tượng', không phải là 'Chuỗi ', đó là lý do tại sao bạn có kết quả như vậy. Để chuyển đổi chuỗi thành đối tượng, hãy sử dụng' JSON.parse (chuỗi của bạn) ', và sau đó chuyển tới hàm' JSON.stringify'. Vì vậy, bạn cần làm điều này: 'JSON.stringify (JSON. parse (string của bạn), null, '\ t') ' – Engineer

+0

Cảm ơn @engineer! –

0

thử solution này, tôi cũng đã sử dụng điều này trong dự án của tôi

+0

Cảm ơn câu trả lời, nhưng giải pháp của @ Engineer đã làm việc tốt nhất –

+0

Chức năng gốc hoạt động tốt o cần thêm phụ thuộc 'var str = JSON.stringify (obj, null, 2);' –