如何格式化Json输出? [复制]
Posted
技术标签:
【中文标题】如何格式化Json输出? [复制]【英文标题】:how to format Json output? [duplicate] 【发布时间】:2012-01-05 09:34:04 【问题描述】:我的 Web 服务响应具有 mimetype: "application/json" 并且我的 JSON 输出没有空格,像这样
1
"Data":"Item":"123","Timestamp":"2011-11-24T17:50:43"
什么时候 JSON 应该像这样输出
2
"Data":
"Item":"123",
"Timestamp":"2011-11-24T17:50:43"
有什么办法可以修复 JSON 格式,使它看起来像 #2?
【问题讨论】:
你说它“应该”看起来像那样 - 为什么?能够能够对其进行格式化很好,但重要的是要了解这两个版本就使用数据的 javascript 而言是等效的。 调试需要这个吗?我只是感兴趣 除了@JonSkeet - 很好地格式化 JSON 只会增加一点开销(因为空白字符也需要通过线路传输)。 @Jon,当你想调试时它很好 :) 谢谢。 【参考方案1】:我不会更改网络服务写出的格式,但如果您想将其格式化以用于诊断目的,您可以使用Json.NET 非常简单地做到这一点:
JObject json = JObject.Parse(text);
string formatted = json.ToString();
结果会自动格式化。您可以将其放入一个小工具中 - 桌面工具或某处的网页。 (如果已经有在线 JSON 格式化程序,我不会感到惊讶,但显然您在格式化敏感数据时要小心。)
【讨论】:
Telerik 的 Fiddler 可以很好地格式化 JSON 响应。 为什么要小心格式化敏感数据? @ZinanXing:看句子的上下文:online JSON formatters。如果您有关于您的客户的私人信息,您认为他们会如何看待您将它们(可能通过 HTTP)提交到某个第 3 方网站进行格式化? @JonSkeet:非常有道理。【参考方案2】:如果你的 json 的根元素是一个数组,Jon 的回答似乎不起作用。使用 JToken 而不是 JObject 为我解决了这个问题。作为字符串的扩展方法,它看起来像:
public static string FormatJson(this string json)
return JToken.Parse(json).ToString();
【讨论】:
【参考方案3】:如果您从 Firefox 调用您的服务,有一个不错的插件可以为您美化 JSON:JSONView
我也曾经使用这个网站来格式化和验证任何 JSON:JSON Formatter
【讨论】:
OP 希望使用 C# 以编程方式完成以上是关于如何格式化Json输出? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何在python中将字符串列表转换为格式正确的json? [复制]
如何以 json 格式(双引号)漂亮地打印(人类可读的打印)Python dict? [复制]