如何格式化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? [复制]

如何将 JSON 元素输出到 Kotlin? [复制]

如何使用 awk 重新格式化 JSON? [复制]

如何将ajax请求返回的Json格式数据循环输出成table形式

如何使用动态键格式化 json? [复制]