如何格式化Json输出?

8

我的Web服务响应的MIME类型是:"application/json",我的JSON输出没有空格,就像这样

1

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

当JSON应该输出如下内容时:

2

该句话涉及到JSON格式的输出,其中包含了HTML标签。
{
   "Data":{
      "Item":"123",
      "Timestamp":"2011-11-24T17:50:43"
   }
}

有没有办法修复JSON格式,使其看起来像#2?

1
你说它应该看起来像那样 - 为什么?能够格式化很好,但重要的是要理解两个版本在JavaScript消耗数据方面是等效的。 - Jon Skeet
你需要这个来调试吗?我只是感兴趣。 - Grrbrr404
除了@JonSkeet - 格式化你的JSON会增加一点额外的开销(因为空格字符也需要通过网络传输)。 - Pavel Donchev
1
@Jon,当你想要调试的时候这很好 :) 谢谢。 - 001
3个回答

23

我不会改变Web服务输出的格式,但如果您想为诊断目的格式化它,您可以使用Json.NET来非常简单地完成:

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

结果会自动格式化。你可以将其放入一个小工具中——无论是桌面工具还是网页。 (我不会感到惊讶,如果已经有在线JSON格式化程序了,尽管显然你需要小心处理敏感数据的格式。)


1
Fiddler可以将Telerik格式的JSON响应整理得很好。 - Diganta Kumar
我为什么应该注意格式化敏感数据? - RomanKousta
2
@ZinanXing:看一下这句话的上下文:“在线JSON格式化工具”。如果你有关于客户的私人信息,你认为将它们(可能通过HTTP)提交给第三方网站进行格式化,你觉得他们会有什么感受? - Jon Skeet
@JonSkeet:非常有道理。 - RomanKousta

3

如果您的 json 根元素是一个数组,则 Jon 的答案似乎不起作用。对于我来说,使用 JToken 而不是 JObject 可以解决这个问题。作为字符串的扩展方法,代码如下:

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

-1
如果您从Firefox调用服务,那么有一个很好的插件可以为您美化JSON:JSONView
我也曾经使用过这个网站来格式化和验证任何JSON:JSON Formatter

2
OP希望使用C#编程来实现。 - Nitin Sawant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接