Search code examples
c#jsonjson.net

JsonConvert.DeserializeObject<List<ConclusionEntityCategory>> is returning null objects in List


I am new to Json.Net and am having a difficult time deserializing my Json objects into .Net objects. It creates ConclusionEntityCategory objects but those in turn contain null objects. My code is as follows:

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);

Here is my class:

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

The value of c is a List<ConclusionEntityCategory> with 2 ConclusionEntityCategory objects in the List. However, all of the properties within each of the ConclusionEntityCategory objects are null.

Any help with this problem would be greatly appreciate.


Solution

  • As a result of Category, SubCategory1, and SubCategory2 being internal, the serializer cannot set them. These need to be public properties in order to be populated.

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