【问题标题】:Make .Net Web API JSON output pretty使 .Net Web API JSON 输出漂亮
【发布时间】:2019-11-04 02:08:37
【问题描述】:

我正在使用下面的代码通过 Newtonsoft.Json 获取 JSON 格式的数据:

我创建 JSON 的代码是

            Dim sb As New StringBuilder()
            Dim sw As New StringWriter(sb)
            Dim writer As JsonWriter = New JsonTextWriter(sw)  
            writer.WriteStartArray()

            For Each elements As JToken In result
                If i = 0 Then
                    i += 1
                    Continue For
                End If
                For Each aaa As JToken In elements
                    writer.WriteStartObject()
                    Dim pmid = aaa("uid").Value(Of String)
                    Dim issn = aaa("issn").Value(Of String)
                    Dim essn = aaa("essn").Value(Of String)
                    Dim source = aaa("source").Value(Of String)                 
                    Dim sortpubdate = aaa("sortpubdate").Value(Of String)

                    writer.WritePropertyName("pmid")
                    writer.WriteValue(pmid)
                    writer.WritePropertyName("journal")
                    writer.WriteValue(source)

                    writer.WritePropertyName("issn")
                    writer.WriteValue(issn)
                    writer.WritePropertyName("essn")
                    writer.WriteValue(essn)
                    writer.WritePropertyName("sortpubdate")
                    writer.WriteValue(sortpubdate)
                    writer.WritePropertyName("pubYear")  
                    writer.WriteEndObject()
                Next
            Next
            writer.Close()
            Return sb.ToString

输出代码是

public HttpResponseMessage Get()
{
    string yourJson = GetJsonFromSomewhere();
    var response = this.Request.CreateResponse(HttpStatusCode.OK);
    response.Content = new StringContent(yourJson, Encoding.UTF8, "application/json");
    return response;
}

我目前的输出是。

[{"pmid":"29241721","issn":"0749-3797","essn":"1873-2607","journal":"Am J Prev Med","pubYear":"2018","ImpactFactor":"  4.127"},{"pmid":"28987617","issn":"0166-4328","essn":"1872-7549","journal":"Behav Brain Res","pubYear":"2018","ImpactFactor":"  3.173"},

有没有办法让我的输出缩进?

[{
    "pmid": "29241721",
    "issn": "0749-3797",
    "essn": "1873-2607",
    "journal": "Am J Prev Med",
    "pubYear": "2018",
    "ImpactFactor": "  4.127"
}, {

有没有办法像下面那样做?

this.SerializerSettings.Formatting = Formatting.Indented;

客户端只是一个获得响应的简单浏览器 URL

【问题讨论】:

    标签: json asp.net-web-api


    【解决方案1】:

    您应该在序列化时缩进您的对象,然后在您想要的任何地方使用它。如果GetJsonFormatSomewhere() 是您的序列化方法,您应该在下面的该方法中序列化您的对象:

    var serializedObject = JsonConvert.SerializeObject(data, Formatting.Indented);
    

    然后将缩进的对象传递给StringContent 方法。

    注意:最好在客户端缩进您的输出,这样您的数据包大小将保持较小且性能友好。

    【讨论】:

    • 我同意您的评论,但我还需要一个原始回复,以便向管理员提供更多概念证明,以便更容易阅读/显示并且不会添加到客户端代码中。
    【解决方案2】:

    我得到了我需要的东西

        Dim writer As JsonWriter = New JsonTextWriter(sw)
        writer.Formatting = Newtonsoft.Json.Formatting.Indented
    

    【讨论】:

      猜你喜欢
      • 2014-12-13
      • 2015-09-05
      • 2012-05-18
      • 1970-01-01
      • 1970-01-01
      • 2014-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多