У меня есть следующий класс:
public class MyData
{
public Data2[] Data2 { get; set; }
}
public class Data2
{
public string X { get; set; }
public string Y { get; set; }
}
В моем appsettings.json у меня есть это:
{
"Data": [
{
"X": "1",
"Y": "2",
},
{
"X": "4",
"Y": "5",
}
]
}
Я пытаюсь десериализовать это в startup.cs:
var data = Configuration.GetSection("Data").Get<MyData>();
У меня проблема в том, что data.Data2
равно нулю.
Если я не увижу Data2
где-либо в JSON, я, безусловно, заставлю задуматься, все ли настроено прямо здесь.
@Damien_The_Unbeliever Правильно — Data2
не фигурирует в JSON. Так как же должен выглядеть класс, чтобы его можно было десериализовать?
пытаться:
От:
public Data2[] Data2 { get; set; }
К:
public Data2[] Data { get; set; }
Ваша модель неверна. Вам нужно использовать такие классы:
public class Datum {
public string X { get; set; }
public string Y { get; set; }
}
public class Root {
public List<Datum> Data { get; set; }
}
Вы можете использовать этот веб-сайт для преобразования любого JSON в допустимый класс C#.
Таким образом, ваш
Data
в конфигурации не являетсяMyData
прямым массивомData2
... у вас вообще нет строкиData2
в вашей конфигурации, так что вы ожидаете