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

StackOverflow https://stackoverflow.com/questions/23523316

  •  17-07-2023
  •  | 
  •  

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.

有帮助吗?

解决方案

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

其他提示

Try marking the internal properties on ConclusionEntityCategory with [JsonProperty] attribute, or if that is not desirable, set DefaultContractResolver.DefaultMemberSearchFlags to include non-public flag.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top