JsonConvert.DeserializeObject <列表<conclusionentitycategory>&GT;在List </list <endingentitycategory>中返回null对象

时间:2014-05-07 16:28:20

标签: c# json json.net

我是Json.Net的新手,很难将我的Json对象反序列化为.Net对象。 我的代码如下:

const string catAndSubCat = @"[
    {
        ""Category"": ""risk factor"",
        ""SubCategory2"": [
            ""default"",""Minor risk factor"",""Major risk factor""
        ]
    },
    {
        ""Category"": ""intervention group"",
        ""SubCategory2"": [
            ""default"",""Minor risk factor"",""Major risk factor""
        ]
    }
]";

var c = JsonConvert.DeserializeObject<List<ConclusionEntityCategory>>(catAndSubCat);

这是我的班级:

internal class ConclusionEntityCategory
{
    internal string Category { get; set; }
    internal string SubCategory1 { get; set; }
    internal List<string> SubCategory2 { get; set; }
}

c的值是List<ConclusionEntityCategory>ConclusionEntityCategory中包含2个List个对象。但是,每个ConclusionEntityCategory对象中的所有属性都为空。

对此问题的任何帮助都将非常感激。

2 个答案:

答案 0 :(得分:1)

由于Category,SubCategory1和SubCategory2是内部的,序列化程序无法设置它们。这些必须是公共属性才能被填充。

internal class ConclusionEntityCategory
{
 public string Category { get; set; }
 public string SubCategory1 { get; set; }
 public List<string> SubCategory2 { get; set; }
}

答案 1 :(得分:0)

尝试使用ConclusionEntityCategory属性标记[JsonProperty]上的内部属性,或者如果不合适,请将DefaultContractResolver.DefaultMemberSearchFlags设置为包含非公开标记。