У меня есть следующие JSON
{"id":"154298_child","design":{"id":154298,"alias":"SOME NAME","published_at":"2013-02-04T00:00:00+0400","author":[]} }
и этот
{"id":"292171_manshort","design":{"id":292171,"alias":"some name2","published_at":"2014-04-08T00:00:00+0400","author":{"nickname":"Malkia"}}}
Чем я десериализую их на объект
public class Data
{
public string id { get; set; }
public Design design { get; set; }
}
public class Design
{
public int id { get; set; }
public string alias { get; set; }
public DateTime published_at { get; set; }
[JsonConverter(typeof(SingleOrArrayConverter<Author>))]
public List<Author> author { 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
{
get { return false; }
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
}
Вопрос:
Как сериализовать объект по условию
if (Author.Count> 1) => затем второй пример json (для объекта)
if (Author.Count == 0) => затем первый пример json (в массив)