using Newtonsoft.Json.Linq;
public static void Main()
""Stuff"": ""those,are,my,stuff""
var myJObject = JObject.Parse(json);
var serializer = new JsonSerializer();
serializer.Converters.Add(new CsvStringConverter());
var bar = myJObject.ToObject<Bar>(serializer);
foreach (var item in bar.MyFoo.Stuff)
public Foo MyFoo { get; set; }
public string[] Stuff { get; set; }
public class CsvStringConverter : JsonConverter
public override bool CanConvert(Type objectType)
bool canConvert = objectType == typeof(string[]);
Console.WriteLine("Can the converter handle " + objectType.Name + "? " + canConvert);
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
JToken token = JToken.Load(reader);
if (token.Type == JTokenType.Null)
if (token.Type == JTokenType.String)
return ((string)token).Split(',');
if (token.Type == JTokenType.Array)
return token.ToObject<string[]>(serializer);
throw new JsonException("Unexpected token type: " + token.Type);
public override bool CanWrite => false;
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
throw new NotImplementedException();