ServiceStack反序列化接口属性null in object

时间:2016-10-17 14:21:57

标签: servicestack servicestack-text

我想使用ServiceStack JsonSerializer。

在序列化对象之前,我将IncludeTypeInfo属性设置为true。我的序列化字符串包含所有类型的信息,如" __ type":" .Interfacesb,....

当我想反序列化字符串时,我的接口属性为null,即使我的序列化字符串中有类型信息。在反序列化对象时还需要其他任何配置。

我使用两种方法 JsonSerializer.SerializeToStringJsonSerializer.DeSerializeFromString

示例:

JsConfig.IncludeTypeInfo = true;

Public Class MyObject
{
Public string a{get;set;}
Public interface  b{get;Set;}
}

1 个答案:

答案 0 :(得分:1)

首先,版本4. *是继续开发的版本。任何人都没有积极维护3.9。

在servicestack.text 4.50

上测试

其次,我认为这个属性不是为了反序列化实际对象。

我在4.50中做了同样的事情并且它没有反序列化: enter image description here

替代解决方案

如果你想要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 }); }