美文网首页
Newtonsoft对于接口序列化的设置

Newtonsoft对于接口序列化的设置

作者: 最怕认真 | 来源:发表于2022-08-25 15:20 被阅读0次
public interface Base { }
public class BaseA : Base { public string Name { set; get; } }
public class BaseB : Base { public int Age { set; get; } }
public class Root { public Base Base { set; get; } }

void Test()
{
            var setting = new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.Auto };
            var root = new Root() { Base = new BaseA { Name = "Name" } };
            Console.WriteLine(JsonConvert.SerializeObject(root, setting));
            Console.WriteLine( JsonConvert.SerializeObject(root));
}

{"Base":{"$type":"Server.Controllers.SetMsgTempController+BaseA, Server","Name":"Name"}}
{"Base":{"Name":"Name"}}

如果加上var setting = new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.Auto };
那么序列化出来的会带有类的信息,这样在反序列化的时候就可以根据信息反序列化回去。
所以在反序列化的时候同样也要加上这个设置。

 var setting = new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.Auto };
 var root = new Root() { Base = new BaseA { Name = "Name" } };
 var content = JsonConvert.SerializeObject(root, setting);
 JsonConvert.DeserializeObject<Root>(content, setting);

相关文章

网友评论

      本文标题:Newtonsoft对于接口序列化的设置

      本文链接:https://www.haomeiwen.com/subject/latzgrtx.html