using System.Collections.Generic;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Converters;
public static void Main()
""totalresults"": ""100"",
var result = JsonConvert.DeserializeObject<Root>(input);
public partial class Root
public string Result { get; set; }
[JsonProperty("totalresults")]
public string Totalresults { get; set; }
public Items Items { get; set; }
public partial class Items
public List<Item> Item { get; set; }
public partial class Item
public string Id { get; set; }
[JsonProperty("lineitems")]
[JsonConverter(typeof(SingleOrArrayConverter<ItemLineitem>))]
public List<ItemLineitem> Lineitems { get; set; }
public partial class ItemLineitem
[JsonProperty("lineitem")]
public List<LineitemLineitem> Lineitem { get; set; }
public partial class LineitemLineitem
public string Type { get; set; }
public string Status { get; set; }
class SingleOrArrayConverter<T> : JsonConverter
public override bool CanConvert(Type objectType)
return (objectType == typeof(List<T>));
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
JToken token = JToken.Load(reader);
if (token.Type == JTokenType.Array)
return token.ToObject<List<T>>();
return new List<T> { token.ToObject<T>() };
public override bool CanWrite
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
throw new NotImplementedException();