使用未知计数插件反序列化Json

时间:2017-06-28 20:57:29

标签: c# json json.net deserialization

我尝试用未知计数迭代反序列化Json。我得到这种格式的菜单结构:

[{
    "id": 15,
    "item": "menuTop",
    "child": {
        "id": 16,
        "item": "subMenu",
        "child": {
            "id": 17,
            "item": "Result",
            "child": null
        }
    }
}]:

它是我的json的一部分,所以我必须检查最后一个说明child的对象:null。否则,它可能会有或多或少的迭代次数。

这是我的代码。但它不起作用。我不确定我的课程项目是否正确,尤其是属性孩子

var result = JsonConvert.DeserializeObject<MenuItem>("mySerializedString");

    class MenuItem
    {
        public long id { get; set; }
        public string item { get; set; }
        public List<MenuItem> child { get; set; }
    }

1 个答案:

答案 0 :(得分:2)

您必须反序列化为List<MenuItem>,且儿童必须为MenuItem而不是列表

var result = JsonConvert.DeserializeObject<List<MenuItem>>(json);

class MenuItem
{
    public long id { get; set; }
    public string item { get; set; }
    public MenuItem child { get; set; }
}

<强>更新

正如@Alexei Levenkov向我指出的那样,谢谢你,有一些工具可以从json文件创建C#类。

有些网站可以粘贴你的json,它会生成你需要反序列化你的json所需的C#类,例如json2charp

在此Stackoverflow question,您可以找到更多信息。