Здравствуйте, я пытаюсь десериализовать следующий json в С#:
{
"Labels":[
{
"DeviceID":9,
"Disabled":false,
"Id":0,
"Internal":"1@CB_I_AllCloseCheck",
"Label":"CB_I_AllCloseCheck",
"MAddress":0,
"Mask":2147483648,
"ModuleID":4,
"Offset":0,
"Position":1,
"SectionID":0,
"Type":16
}
]
}
Со следующей строкой кода:
Labels myDeserializedObjList = (Labels)JsonConvert.DeserializeObject(sub, typeof(Labels));
Строка sub содержит этот json как строку. Где мои метки класса следующие:
public class Labels
{
public string DeviceID { get; set; }
public string Disabled { get; set; }
public string IValue { get; set; }
public string Id { get; set; }
public string Internal { get; set; }
public string Label { get; set; }
public string MAddress { get; set; }
public string Mask { get; set; }
public string ModuleID { get; set; }
public string Offset { get; set; }
public string Position { get; set; }
public string SectionID { get; set; }
public string Type { get; set; }
}
Но в результате этой операции все мои атрибуты равны нулю. Кто-нибудь знает, что я делаю неправильно?
🤔 А знаете ли вы, что...
C# поддерживает LINQ (Language Integrated Query) для удобного запроса и обработки данных.
На данный момент ваш корневой объект — это просто объект. Это не массив. Его единственное свойство (Labels) — это массив.
Вы должны добавить дополнительный класс «корневого объекта»:
public class LabelsContainer
{
public IList<Labels> Labels {get;set;}
}
И затем десериализуйте это:
var labelsContainer = Newtonsoft.Json.JsonConvert.DeserializeObject<LabelsContainer>(data);
var labels = labelsContainer?.Labels;