我想使用ServiceStack JsonSerializer。
在序列化对象之前,我将IncludeTypeInfo属性设置为true。我的序列化字符串包含所有类型的信息,如" __ type":" .Interfacesb,....
当我想反序列化字符串时,我的接口属性为null,即使我的序列化字符串中有类型信息。在反序列化对象时还需要其他任何配置。
我使用两种方法
JsonSerializer.SerializeToString
和JsonSerializer.DeSerializeFromString
示例:
JsConfig.IncludeTypeInfo = true;
Public Class MyObject
{
Public string a{get;set;}
Public interface b{get;Set;}
}
答案 0 :(得分:1)
首先,版本4. *是继续开发的版本。任何人都没有积极维护3.9。
其次,我认为这个属性不是为了反序列化实际对象。
如果你想要json中的类型,你可以在这里阅读:https://stackoverflow.com/a/21603948/1275832。
我使用以下代码作为替代解决方案(请注意其扩展方法)作为运行时动态类型的解决方案(v4.50):
you already get all results from database
和用法:public static object FromJson(this string json, Type deserializeType)
{
return typeof(JsonSerializer).GetMethod("DeserializeFromString", BindingFlags.Static)
.MakeGenericMethod(deserializeType)
.Invoke(null, new[] { json });
}