deserializing integer array as object array with json.net -


i'm using class base class enumerations: link created custom json.net converter handle enumerations when serializing/deserializing objects. serialization works fine, when try deserialize object has enumeration collection property, json.net throws serializationexception following message:

unexpected end when deserializing array. path '', line 11, position 2.

update : here classes cutdown version of enumeration class.

public class program {     static void main(string[] args)     {         var employee = new employee         {             name="asd",             types = new list<employeetype>()             {                 employeetype.assistanttotheregionalmanager,                 employeetype.manager,                 employeetype.servant             }         };          var json = jsonconvert.serializeobject(employee, new enumerationtypeconverter());         var deserializedemployee=jsonconvert.deserializeobject<employee>(json,new enumerationtypeconverter());     } }  public class employee {     public string name { get; set; }     public list<employeetype> types { get; set; } }   public class employeetype : enumeration {     public static readonly employeetype manager         = new employeetype(0, "manager");     public static readonly employeetype servant         = new employeetype(1, "servant");     public static readonly employeetype assistanttotheregionalmanager         = new employeetype(2, "assistant regional manager");      public employeetype() { }     private employeetype(int value, string displayname) : base(value, displayname) { } }  public class enumerationtypeconverter : jsonconverter {     public override void writejson(jsonwriter writer, object value, jsonserializer serializer)     {         writer.writevalue((value enumeration).value);     }      public override object readjson(jsonreader reader, type objecttype, object existingvalue, jsonserializer serializer)     {         int? value = reader.readasint32();         return value.hasvalue ? enumeration.fromvalue(value.value, objecttype) : null;     }      public override bool canconvert(type objecttype)     {         return objecttype.issubclassof(typeof(enumeration));     }  } public abstract class enumeration {     public int value     {         get; set;     }     public string displayname { get; set; }      protected enumeration(int value, string displayname)     {         value = value;         displayname = displayname;     }              public static ienumerable<enumeration> getall(type type)     {         var fields = type.getfields(bindingflags.public | bindingflags.static | bindingflags.declaredonly);         foreach (var fieldinfo in fields)         {             yield return fieldinfo.getvalue(null) enumeration;         }     }      public static object fromvalue(int value, type type)     {         return getall(type).firstordefault(p => p.value == value);     } } 

what doing wrong?

jsonreader.readasint32() reads next json token stream. want value of current token. do:

var value = (int?)jtoken.load(reader); 

Comments