c# – 仅反序列化JSON文件的一个属性
发布时间:2020-12-15 23:39:32 所属栏目:百科 来源:网络整理
导读:我遇到了一个问题. 我想从服务器反序列化一个复杂的 JSON响应,但我只需要它的一部分. 这是一个例子: { "menu": { "id": "file","value": "File","popup": { "menuitem": [ {"value": "New","onclick": "CreateNewDoc()"},{"value": "Open","onclick": "Open
我遇到了一个问题.
我想从服务器反序列化一个复杂的 JSON响应,但我只需要它的一部分. 这是一个例子: { "menu": { "id": "file","value": "File","popup": { "menuitem": [ {"value": "New","onclick": "CreateNewDoc()"},{"value": "Open","onclick": "OpenDoc()"},{"value": "Close","onclick": "CloseDoc()"} ] } } } 我还使用Csharp2json来获取我需要的类对象,我只是根据我的需要修改了菜单类: public class Menuitem { public string value { get; set; } public string onclick { get; set; } } public class Popup { public IList<Menuitem> menuitem { get; set; } } public class Menu { public Popup popup { get; set; } } public class RootObjectJourney { public Menu menu { get; set; } } 现在,如果我只需要弹出值和他的孩子,我该如何反序列化? 解决方法
如果你想以艰难的方式尝试它,你实际上可以利用NewtonSoft.Json的Linq命名空间并稍微修改你的代码以获得JSON中的“弹出”元素.
你的班级结构保持不变.确保使用命名空间 using Newtonsoft.Json; using Newtonsoft.Json.Linq; 然后在你的代码中,一旦你有了JSON字符串,就可以使用“JObject”静态方法“Parse”来解析JSON,就像 var parsedObject = JObject.Parse(jsonString); 这将为您提供JObject,您可以使用它来访问所有JSON键,就像字典一样. var popupJson = parsedObject["menu"]["popup"].ToString(); 这个popupJson现在只有弹出键的JSON. var popupObj = JsonConvert.DeserializeObject<Popup>(popupJson); 这个popupObj只有menuitems列表. 希望这可以帮助! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容