加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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.
有了这个,您可以使用JsonConvert来反序列化JSON.

var popupObj = JsonConvert.DeserializeObject<Popup>(popupJson);

这个popupObj只有menuitems列表.

希望这可以帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读