using Newtonsoft.Json.Linq;
public static void Main()
""ticket_id"": ""A1234"",
DeserializeAndDump(json);
""ticket_id"": ""B9876"",
DeserializeAndDump(json);
private static void DeserializeAndDump(string json)
Ticket ticket = JsonConvert.DeserializeObject<Ticket>(json);
Console.WriteLine("id: " + ticket.Ticket_Id);
Console.WriteLine("currency: " + ticket.SellPrice.Currency);
Console.WriteLine("amount: " + ticket.SellPrice.Amount);
public string Ticket_Id { get; set; }
public SellPrice SellPrice { get; set; }
[JsonConverter(typeof(SellPriceConverter))]
public string Currency { get; set; }
public double Amount { get; set; }
public class SellPriceConverter : JsonConverter
public override bool CanConvert(Type objectType)
return objectType == typeof(SellPrice);
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
JToken token = JToken.Load(reader);
SellPrice sellPrice = new SellPrice();
if (token.Type == JTokenType.Object)
serializer.Populate(token.CreateReader(), sellPrice);
else if (token.Type == JTokenType.Float)
sellPrice.Amount = (double)token;
throw new JsonException("Unexpected token type for SellPrice: " + token.Type.ToString());
public override bool CanWrite
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
throw new NotImplementedException();