Мой класс не заполняется при десериализации из строки JSON - PullRequest
2 голосов
/ 17 марта 2020

У меня есть строка JSON с именем rawdata в следующем формате:

{
  "Base": {
    "RecordDescriptorWord": "0426",
    "ProcessingIndicator": "1",
    "TimeStamp": "08062018131518",
    "Reserved": "0",
    "IdentificationNumber": "9182736",
    "ConsumerAccountNumber": "000000000000000372513500000221",
    "PortfolioType": "R",
    "AccountType": "0G",
    "DateOpened": "10012014",
    "CreditLimit": "000050000",
    "HighestCredit": "000033486",
    "TermsDuration": "REV",
    "TermsFrequency": "M",
    "ScheduledMonthlyPaymentAmount": "000000445"
  }
}

, и я использую этот код для десериализации:

Base content = JsonConvert.DeserializeObject<Base>(rawdata.Content?.ToString());

, но мой Base объект не заполняется. Что может быть не так?

public class Base
{       
    [JsonProperty(PropertyName = "RecordDescriptorWord")]
    public string RecordDescriptorWord { get; set; }

    [JsonProperty(PropertyName = "ProcessingIndicator")]
    public string ProcessingIndicator { get; set; }   
}

1 Ответ

0 голосов
/ 17 марта 2020

Вы получаете пустой результат, потому что ваш JSON не соответствует структуре вашего класса.

JSON представляет объект, имеющий единственное свойство Base, значение которого является объектом, содержащим 14 других свойства, среди них RecordDescriptorWord и ProcessingIndicator. Но ваш класс представляет (часть) только внутренний объект, а не внешний.

Короче говоря, вам нужен еще один класс, как указано в комментариях:

public class Root
{
    public Base Base { get; set; }
}

Затем вам нужно десериализовать JSON в этот новый класс:

Root root = JsonConvert.DeserializeObject<Root>(rawdata.Content?.ToString());

Оттуда вы можете получить нужный объект:

Base content = root.Base;

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

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