У меня есть модель, которая содержит и массив другого типа объекта. Родительский объект десериализуется отлично, но вложенный массив постоянно терпит неудачу.JSONConvert DeserializeObject с вложенным массивом
Вот мои объекты:
public class VenueRoomViewModel
{
public string Name { get; set; }
public decimal HourCost { get; set; }
public decimal DayCost { get; set; }
public int MaxDelegate { get; set; }
public string SpecialNotes { get; set; }
public string Status { get; set; }
[JsonProperty("AssociatedFacilities")]
public List<FacilityViewModel> AssociatedFacilities { get; set; }
}
public class FacilityViewModel
{
public string FacilityName { get; set; }
public int FacilityNo { get; set; }
public string FacilityStatus { get; set; }
}
Я стараюсь разобрать JSON как это:
VenueRoomViewModel myVM = sonConvert.DeserializeObject<VenueRoomViewModel>(jsonModel);
и вот копия JSON, что он пытается разобрать:
"{\"State\":1,\"No\":\"0\",\"Name\":\"test\",\"HourCost\":\"12\",\"DayCost\":\"12\",\"MaxDelegate\":\"12\",\"SpecialNotes\":\"blah blah blah\",\"Status\":\"A\",\"AssociatedFacilities\":\"[{\\\"FacilityStatus\\\":1,\\\"FacilityNo\\\":\\\"1\\\",\\\"FacilityName\\\":\\\"Overhead Projector\\\"},{\\\"FacilityStatus\\\":1,\\\"FacilityNo\\\":\\\"5\\\",\\\"FacilityName\\\":\\\"New Facility\\\"}]\",\"VenueNo\":\"2\"}"
Если я разобрал объекты индивидуально, тогда он работает нормально, но я не могу заставить его работать, просто разбирая stri ng
var converter = new ExpandoObjectConverter();
dynamic obj = JsonConvert.DeserializeObject<ExpandoObject>(jsonModel, converter);
List<FacilityViewModel> facilities = JsonConvert.DeserializeObject<List<FacilityViewModel>>(obj.AssociatedFacilities);
это разбирает вложенные массивы, поэтому я думаю, что json в порядке.
Вот она работает https://dotnetfiddle.net/znMYDZ
'FacilityStatus' является' int' в данных, но 'string' в модели? И 'FacilityNo' является обратным этим. Думайте, что эти типы нуждаются в замене. – Lloyd