使用Json.Net的多态JSON反序列化失败

使用Json.Net的多态JSON反序列化失败,第1张

使用Json.Net的多态JSON反序列化失败

首先,

SourceType
错过了您的json中的菜单项“ Submenus Test”。

其次,您不应该仅仅

ToObject
因为该
Submenus
属性而使用它,而应该以递归方式对其进行处理。

以下

ReadJson
起作用

public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer){    var jObject = JObject.Load(reader);    var sourceType = jObject["SourceType"].Value<string>();    object target = null;    switch (sourceType)    {        case SourceType.File:  target = new FileMenu(); break;        case SourceType.Folder:  target = new FolderMenu(); break;        case SourceType.Json:  target = new JsonMenu(); break;        case SourceType.RestGet:  target = new RestMenu(); break;        case SourceType.Rss:  target = new RssMenu(); break;        case SourceType.Text:  target = new TextMenu(); break;        case SourceType.Url:  target = new UrlMenu(); break;        default:  throw new ArgumentException("Invalid source type");    }    serializer.Populate(jObject.CreateReader(), target);    return target;}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5560413.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存