Ali-YousefiTelori / BinaryGo

simple and easy and fast serialize and deserialize json
MIT License
19 stars 3 forks source link

System.MissingMethodException (Cannot create an instance of an interface) when trying to deserialize data #7

Closed MagicAndre1981 closed 5 years ago

MagicAndre1981 commented 5 years ago

While playing with preview 5 to validate my issue I get JSON that is somehow not recognized by VS2017 and when I try to deserialize the JSON I provided in issue 6 (var empList = JsonGo.Deserialize.Deserializer.SingleIntance.Deserialize<List<EMPLOYEE>>(value);), I get an System.MissingMethodException with error message Cannot create an instance of an interface :

   bei System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
   bei System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
   bei System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
   bei System.Activator.CreateInstance(Type type, Boolean nonPublic)
   bei System.Activator.CreateInstance(Type type)
   bei JsonGo.Runtime.TypeGoInfo.<>c__DisplayClass53_0.<Generate>b__46() in D:\Github\JsonGo\Engine\JsonGo\Runtime\TypeGoInfo.cs:Zeile 434.
   bei JsonGo.Deserialize.FastDeserializerExtractor.ExtractOject(Deserializer deserializer, TypeGoInfo typeGo, Object& instance, JsonSpanReader& json) in D:\Github\JsonGo\Engine\JsonGo\Deserialize\FastDeserializerExtractor.cs:Zeile 123.
   bei JsonGo.Deserialize.FastDeserializerExtractor.ExtractArray(Deserializer deserializer, TypeGoInfo typeGo, Object& instance, JsonSpanReader& json) in D:\Github\JsonGo\Engine\JsonGo\Deserialize\FastDeserializerExtractor.cs:Zeile 61.
   bei JsonGo.Deserialize.FastDeserializerExtractor.Extract(Deserializer deserializer, TypeGoInfo typeGo, Object& instance, Func`1 createInstance, JsonSpanReader& json) in D:\Github\JsonGo\Engine\JsonGo\Deserialize\FastDeserializerExtractor.cs:Zeile 41.
   bei JsonGo.Deserialize.FastDeserializerExtractor.ExtractOject(Deserializer deserializer, TypeGoInfo typeGo, Object& instance, JsonSpanReader& json) in D:\Github\JsonGo\Engine\JsonGo\Deserialize\FastDeserializerExtractor.cs:Zeile 126.
   bei JsonGo.Deserialize.FastDeserializerExtractor.Extract(Deserializer deserializer, TypeGoInfo typeGo, Object& instance, Func`1 createInstance, JsonSpanReader& json) in D:\Github\JsonGo\Engine\JsonGo\Deserialize\FastDeserializerExtractor.cs:Zeile 35.
   bei JsonGo.Deserialize.Deserializer.Deserialize[T](String json) in D:\Github\JsonGo\Engine\JsonGo\Deserialize\Deserializer.cs:Zeile 57.
   bei Demo.Program.Main(String[] args)
Ali-YousefiTelori commented 5 years ago

Hi, Please check Preview6

MagicAndre1981 commented 5 years ago

new version generates NullreferenceException:

System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
   bei JsonGo.Deserialize.FastDeserializerExtractor.ExtractArray(Deserializer deserializer, TypeGoInfo typeGo, Object& instance, JsonSpanReader& json) in D:\Github\JsonGo\Engine\JsonGo\Deserialize\FastDeserializerExtractor.cs:Zeile 85.
   bei JsonGo.Deserialize.FastDeserializerExtractor.Extract(Deserializer deserializer, TypeGoInfo typeGo, Object& instance, Func`1 createInstance, JsonSpanReader& json) in D:\Github\JsonGo\Engine\JsonGo\Deserialize\FastDeserializerExtractor.cs:Zeile 41.
   bei JsonGo.Deserialize.FastDeserializerExtractor.ExtractOject(Deserializer deserializer, TypeGoInfo typeGo, Object& instance, JsonSpanReader& json) in D:\Github\JsonGo\Engine\JsonGo\Deserialize\FastDeserializerExtractor.cs:Zeile 126.
   bei JsonGo.Deserialize.FastDeserializerExtractor.Extract(Deserializer deserializer, TypeGoInfo typeGo, Object& instance, Func`1 createInstance, JsonSpanReader& json) in D:\Github\JsonGo\Engine\JsonGo\Deserialize\FastDeserializerExtractor.cs:Zeile 35.
   bei JsonGo.Deserialize.FastDeserializerExtractor.ExtractOject(Deserializer deserializer, TypeGoInfo typeGo, Object& instance, JsonSpanReader& json) in D:\Github\JsonGo\Engine\JsonGo\Deserialize\FastDeserializerExtractor.cs:Zeile 126.
   bei JsonGo.Deserialize.FastDeserializerExtractor.ExtractArray(Deserializer deserializer, TypeGoInfo typeGo, Object& instance, JsonSpanReader& json) in D:\Github\JsonGo\Engine\JsonGo\Deserialize\FastDeserializerExtractor.cs:Zeile 61.
   bei JsonGo.Deserialize.FastDeserializerExtractor.Extract(Deserializer deserializer, TypeGoInfo typeGo, Object& instance, Func`1 createInstance, JsonSpanReader& json) in D:\Github\JsonGo\Engine\JsonGo\Deserialize\FastDeserializerExtractor.cs:Zeile 41.
   bei JsonGo.Deserialize.FastDeserializerExtractor.ExtractOject(Deserializer deserializer, TypeGoInfo typeGo, Object& instance, JsonSpanReader& json) in D:\Github\JsonGo\Engine\JsonGo\Deserialize\FastDeserializerExtractor.cs:Zeile 126.
   bei JsonGo.Deserialize.FastDeserializerExtractor.Extract(Deserializer deserializer, TypeGoInfo typeGo, Object& instance, Func`1 createInstance, JsonSpanReader& json) in D:\Github\JsonGo\Engine\JsonGo\Deserialize\FastDeserializerExtractor.cs:Zeile 35.
   bei JsonGo.Deserialize.Deserializer.Deserialize[T](String json) in D:\Github\JsonGo\Engine\JsonGo\Deserialize\Deserializer.cs:Zeile 57.
   bei jsongodbtest.Program.Main(String[] args) in C:\Users\Andre\source\jsongodbtest\jsongodbtest\Program.cs:Zeile 43.

image

Deserialize is null

Ali-YousefiTelori commented 5 years ago

please check preview7

MagicAndre1981 commented 5 years ago

please check preview7

works now fine with preview7

image

In the same .cs file where you changed this, maybe also check for null for all other usage of Deserialize.