2011-11-24 143 views
7

我的web服務的響應具有MIME類型: 「應用/ JSON」 和我的JSON輸出無間隔,這樣如何格式化Json輸出?

{"Data":{"Item":"123","Timestamp":"2011-11-24T17:50:43"}} 

當JSON應該這樣

輸出
{ 
    "Data":{ 
     "Item":"123", 
     "Timestamp":"2011-11-24T17:50:43" 
    } 
} 

有沒有什麼辦法可以修復JSON格式,所以它看起來像#2?

+1

你說它「應該」看起來像那樣 - 爲什麼?能夠*格式化它是很好的,但重要的是要明白,就消費數據的JavaScript而言,這兩個版本是等同的。 –

+0

你需要調試嗎?我只是有興趣 – Grrbrr404

+0

除了@JonSkeet - 格式化你JSON nicelly會添加更多的開銷(因爲空白字符將需要通過電線傳輸)。 –

回答

22

我不會改變Web服務寫出來的格式,但如果你想格式化它診斷目的,你可以使用Json.NET要做到這一點很乾脆:

JObject json = JObject.Parse(text); 
string formatted = json.ToString(); 

結果自動格式化。你可以把它放到一個小工具裏 - 一個桌面工具或者一個網頁。 (如果已經存在在線的JSON格式化程序,我不會感到驚訝,但顯然你要小心格式化敏感數據。)

+1

來自Telerik的提琴手很好地格式化了JSON響應。 –

+0

爲什麼我應該小心格式化敏感數據? –

+2

@ZinanXing:看看這句話的內容:*在線JSON格式化程序*。如果你有關於你的客戶的私人信息,你覺得他們會覺得你提交它們(可能通過HTTP)到一些第三方網站進行格式化? –

-1

如果你從Firefox調用你的服務,那麼這個漂亮的插件會優化JSON爲您提供:JSONView

我也用使用本網站來格式化和驗證任何JSON:JSON Formatter

+2

OP希望以編程方式使用C# –

2

喬恩的回答似乎並沒有工作,如果你的JSON的根元素是一個數組。使用JToken而不是JObject爲我解決了這個問題。作爲字符串的擴展方法,看起來像這樣:

public static string FormatJson(this string json) 
{ 
    return JToken.Parse(json).ToString(); 
}