Имена классов от JSON до C# с пробелами
Я возвращаю следующий класс JSON из запроса API
"Top Uncommitted Spend": [
{
"AccountID": 99999991,
"H1": "Liabilities",
"H2": "Top Uncommitted Spend",
"H3": "",
"SH1": "",
"Description": "FUEL (ATM,ATM FEE)",
"Count": 4,
"FrequencyDescription": "Mostly 17 Days",
"FrequencyDuration": "Ongoing",
"FrequencyDurationDate": "11Aug - 30Sep",
"FrequencyWeekday": "",
"FrequencyAmount": 116,
"FrequencyAmountRange": "(2-280)",
"TotalAmount": 464,
"TotalInAmount": 0,
"TotalOutAmount": 464,
"MonthlyAmount": 305.5481,
"GroupID": "128081-1241",
"Display": "FUEL",
"FrequencyExactness": "Mostly",
"FrequencyPeriod": "17 Days",
"ScoreEmployer": null,
"ScoreDirCr": null,
"ScoreWeekday": null,
"ScoreFrequency": null,
"ScoreAmount": null,
"ScoreTotal": 0
},
Когда я использую json2csharp для генерации своего класса, я получаю это, потому что у тега есть пробелы в имени.
public class Liabilities
{
public List<Rent> Rent { get; set; }
public List<Periodic> Periodic { get; set; }
public List<NonPeriodic> __invalid_name__Non-Periodic { get; set; }
public List<TopUncommittedSpend> __invalid_name__Top Uncommitted Spend { get; set; }
}
Когда я удаляю "__invalid_name__" и из названия. Мои разборы, но при запуске он выдает ошибку "Ссылка на объект не установлена на экземпляр объекта".
У меня вопрос, как мне сделать это, чтобы получить данные без удаления пробелов?
1 ответ
Попробуйте удалить пробелы, чтобы сначала получить действительный класс C#, используя http://json2csharp.com/.
Затем используйте аннотацию данных, чтобы связыватель модели мог ее распознать.
Пример:
public class Liabilities
{
//removed other collections for simplicity
[JsonProperty(PropertyName = "Top Uncommitted Spend")] // <-- *add this*
public List<TopUncommittedSpend> TopUncommittedSpend { get; set; }
}
public class TopUncommittedSpend
{
public int AccountID { get; set; }
public string H1 { get; set; }
public string H2 { get; set; }
//removed for simplicity
}
Теперь, если вы делаете сообщение на свой контроллер API, используя ниже:
{
"Top Uncommitted Spend": [{
"AccountID": 99999991,
"H1": "Liabilities",
"H2": "Top Uncommitted Spend"
}
]
}
Он должен работать.