C#学习教程:如何将JSON.Net中的JObject转换为T.分享


如何将JSON.Net中的JObject转换为T.

我知道我可以使用JsonConvert.DeserializeObject(string) ,但是,我需要查看对象的_type (可能不是第一个参数)以确定要转换的特定类。 基本上,我想要做的是:

 //Generic JSON processor for an API Client. function MyBaseType ProcessJson(string jsonText) { var obj = JObject.Parse(jsonText); switch (obj.Property("_type").Value.ToString()) { case "sometype": return obj.RootValue(); //NOTE: this doesn't work... // return obj.Root.Value(); ... } } ... // my usage... var obj = ProcessJson(jsonText); var instance = obj as MyConcreteType; if (instance == null) throw new MyBaseError(obj); 

首先将JSON解析为JObject。 然后使用LINQ to JSON查找_type属性。 然后根据值切换并使用ToObject

 var o = JObject.Parse(text); var jsonType = (String)o["_type"]; switch(jsonType) { case "something": return o.ToObject(); ... } 

JSON.NET没有直接支持这两个要求的能力:

第一个必需条件由JsonSubTypes实现第二个条件是通过指定正确的MetadataPropertyHandling

上述就是C#学习教程:如何将JSON.Net中的JObject转换为T.分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/1031863.html

发表评论

邮箱地址不会被公开。 必填项已用*标注