C# 使用ServiceStack.Text对常规列表的反序列化不正确
我想问一下,我得到的以下行为——v3(BSD)或v4——是否是一个bug 我有一个通用列表。我使用myList.ToJson()序列化它。因此,我得出以下结论:C# 使用ServiceStack.Text对常规列表的反序列化不正确,c#,json,
servicestack-text,servicestack-bsd,C#,Json,
servicestack Text,Servicestack Bsd,我想问一下,我得到的以下行为——v3(BSD)或v4——是否是一个bug 我有一个通用列表。我使用myList.ToJson()序列化它。因此,我得出以下结论: "[{\"__type\":\"MyNameSpace.MyType, MyAssembly\", ... (properties)}, {... (properties)}, {... (properties)}, {... (properties)}, ...]" 也就是说,只有第一个元素的类型被写入。因此,当我这样做时: var
"[{\"__type\":\"MyNameSpace.MyType, MyAssembly\", ... (properties)},
{... (properties)},
{... (properties)},
{... (properties)},
...]"
也就是说,只有第一个元素的类型被写入。因此,当我这样做时:
var deserialised = myList.ToJson().FromJson<List<object>>();
地址:
在:
WriteType.WriteProperties
该行于2012年12月9日在067ce1f62fc6addd3685a2134dd576529db2549f处添加,以删除属性类型本身。我认为应该在写入所有属性之后,即在同一方法结束之前,恢复IsWritingDynamic以前的值。
有人能确认一下吗
FromJson<List<MyType>>()
JsState.IsWritingDynamic = false;
if (WriteTypeInfo != null || JsState.IsWritingDynamic)
{
if (JsConfig.PreferInterfaces && TryWriteSelfType(writer)) i++;
else if (TryWriteTypeInfo(writer, value)) i++;
JsState.IsWritingDynamic = false;
}
WriteType<T, TSerializer>.WriteProperties