【问题标题】:how to format Json output? [duplicate]如何格式化Json输出? [复制]
【发布时间】: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,当你想调试时它很好 :) 谢谢。

标签: c# json web-services rest


【解决方案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# 以编程方式完成
    猜你喜欢
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 2016-04-24
    • 2017-08-29
    • 2018-04-13
    相关资源
    最近更新 更多