Сделайте вывод в формате JSON для .Net Web API - PullRequest
1 голос
/ 03 ноября 2019

Я использую приведенный ниже код для получения данных в формате JSON с использованием Newtonsoft.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-адрес браузера, который получает ответ

Ответы [ 2 ]

0 голосов
/ 03 ноября 2019

Я получил то, что мне было нужно с

    Dim writer As JsonWriter = New JsonTextWriter(sw)
    writer.Formatting = Newtonsoft.Json.Formatting.Indented
0 голосов
/ 03 ноября 2019

Вы должны сделать отступ для вашего объекта во время сериализации, а затем использовать его везде, где хотите. Если GetJsonFormatSomewhere() является вашим методом сериализации, вы должны выделить этот объект следующим образом:

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

, а затем передать объект с отступом методу StringContent.

Примечание: лучше сделать отступ на стороне клиента, чтобы размер пакета оставался небольшим, а производительность - более низкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...