POCO:
[JsonConverter(typeof(LineItemConverter))] public virtual ICollectionLineItems { get; set; }
JsonConverter:
public class LineItemConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return typeof(LineItem).IsAssignableFrom(objectType);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
var lineitems = JArray.Load(reader);
var lineItemObjects = new List();
foreach (var lineitem in lineitems)
{
switch (EnumUtil.ParseEnum(lineitem["lineItemType"].Value()))
{
case LineItemType.Assessorial:
lineItemObjects.Add(lineitem.ToObject());
break;
case LineItemType.DeficitWeight:
lineItemObjects.Add(lineitem.ToObject());
break;
case LineItemType.Discount:
lineItemObjects.Add(lineitem.ToObject());
break;
case LineItemType.FloorAdjustment:
lineItemObjects.Add(lineitem.ToObject());
break;
case LineItemType.Freight:
lineItemObjects.Add(lineitem.ToObject());
break;
case LineItemType.Fuel:
lineItemObjects.Add(lineitem.ToObject());
break;
case LineItemType.Other:
lineItemObjects.Add(lineitem.ToObject());
break;
default:
break;
}
}
return lineItemObjects;
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
var lineitems = value as ICollection;
serializer.Serialize(writer, lineitems.ToArray());
}
No comments:
Post a Comment