2011-11-24 87 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(); 
}