繁体   English   中英

Json.net(9.x)中的序列化/反序列化Type属性

[英]Serializing/Deserializing Type properties in Json.net (9.x)

我有一个像

public MyObject
{
    [JsonProperty("id")]
    public Guid Id { get; set; }

    [JsonProperty("type")]
    public Type Type { get; set; }
}

我使用序列化设置

new JsonSerializerSettings
{
    TypeNameHandling = TypeNameHandling.Auto,
    TypeNameAssemblyFormat = FormatterAssemblyStyle.Full
};

序列化为

{
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "SomeNamespace.SomeType, SomeAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
}

但随后无法反序列化,出现错误

System.ArgumentException

无法将System.String强制转换或转换为System.Type。

Json.Net 9.0.x版有一个简单的修复程序吗?

我运行了以下代码,它在Newtonsoft 9.0.1中正常运行

private void TestJson()
{
    var jsonSettings = new JsonSerializerSettings
    {
        TypeNameHandling = TypeNameHandling.Auto,
        TypeNameAssemblyFormat = FormatterAssemblyStyle.Full
    };

    var myObj = new MyObject
    {
        Type = typeof(string)
    };

    var serialize = JsonConvert.SerializeObject(myObj, jsonSettings);
    var newObj = JsonConvert.DeserializeObject<MyObject>(serialize, jsonSettings);
}

输出:

在此处输入图片说明

DLL信息:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM