私は、異なるオブジェクト型の配列と配列を持つモデルを持っています。親オブジェクトはデシリアライズされますが、ネストされた配列は常に失敗します。ここで入れ子になった配列を持つ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\"}"
オブジェクトを個別に解析するとうまく動作しますが、ストライドを解析するだけでは動作しないようですng
var converter = new ExpandoObjectConverter();
dynamic obj = JsonConvert.DeserializeObject<ExpandoObject>(jsonModel, converter);
List<FacilityViewModel> facilities = JsonConvert.DeserializeObject<List<FacilityViewModel>>(obj.AssociatedFacilities);
これはネストされた配列を細かく解析するので、jsonは問題ありません。
は、ここでは、問題があなたのJSON文字列としてごAssociatedFacilities
をコードすること、であるhttps://dotnetfiddle.net/znMYDZ
'FacilityStatus'はデータ内の' int'ですが、モデルの 'string'ですか?そして、「FacilityNo」はその逆です。これらのタイプを交換する必要があると考えてください。 – Lloyd