Почему я возвращаю NULL из моей десериализации JSON? - PullRequest
0 голосов
/ 09 мая 2019

У меня есть файл JSON, который выглядит следующим образом:

{
  "dailyNews": [
    {
      "string": "D5FCF84D-B1A2-4172-9A93-E88342AA9E3C",
      "updateDate": "2019-04-24T00:00:00Z",
      "titleText": "something",
      "mainText": "sometihng ",
      "redirectionUrl": " "
    },
    {
      "string": "D5FCF84D-B1A2-4172-9A93-E88342AA9E3C",
      "updateDate": "2019-04-24T00:00:00Z",
      "titleText": "something1",
      "mainText": "sometihng2",
      "redirectionUrl": " "
    },
    {
      "string": "D5FCF84D-B1A2-4172-9A93-E88342AA9E3C",
      "updateDate": "2019-04-24T00:00:00Z",
      "titleText": "something3",
      "mainText": "sometihng4",
      "redirectionUrl": " "
    }
  ]
}

У меня есть класс C #, который я сгенерировал с помощью JSON2CSharp . Этот класс выглядит так:

public partial class TodaysNews
{
    [JsonProperty("string")]
    public string String { get; set; }

    [JsonProperty("updateDate")]
    public DateTimeOffset UpdateDate { get; set; }

    [JsonProperty("titleText")]
    public string TitleText { get; set; }

    [JsonProperty("ImageSrc")]
    public Uri ImageSrc { get; set; }

    [JsonProperty("mainText")]
    public string MainText { get; set; }

    [JsonProperty("redirectionUrl")]
    public Uri RedirectionUrl { get; set; }
}

public class DailyNewsList
{
    public List<TodaysNews> transactions { get; set; }
   // public int count { get; set; }
}

Это код, который будет десериализовать:

public static DailyNewsList FromJson(string json) => 
    JsonConvert.DeserializeObject<TodaysNews>(json, S3Reader.Converter.Settings);

Все отлично работает; объект TodaysNews инициализируется, однако объект List transactions является нулевым. Я совершенно не понимаю, почему?

1 Ответ

1 голос
/ 10 мая 2019

В вашем классе DailyNewsList имя свойства transactions не соответствует имени в JSON, а именно dailyNews.Это можно исправить, украсив свойство transactions атрибутом [JsonProperty], как вы делали в своем классе TodaysNews:

public class DailyNewsList
{
    [JsonProperty("dailyNews")]
    public List<TodaysNews> transactions { get; set; }
}

Кроме того, в вашем методе FromJson вы должны десериализоватьDailyNewsList не TodaysNews:

public static DailyNewsList FromJson(string json) => 
    JsonConvert.DeserializeObject<DailyNewsList>(json, S3Reader.Converter.Settings);

Скрипка: https://dotnetfiddle.net/5pihJE

...