Home > Net >  Nested item in json array is not being deserialized
Nested item in json array is not being deserialized

Time:05-26

I am trying to deserialize a json string from an api.

All works except for a nested item - Location which always ends up null

This is the string structure:

[
    {
        "CompanyProfile": "<p>A&amp;B Inc etc...</p>",
        "Address": "56 Test Street, Test, UK",
        "Location": {
            "Latitude": 61.52787,
            "Longitude": -4.32095,
            "Zoom": 13,
            "Icon": null,
            "Format": 0,
            "Api": null,
            "SearchTyped": null
        },
        "Id": 1723,
        "Name": "A&B Inc"
    },
        {
        "CompanyProfile": "<p>B&amp;C Inc etc...</p>",
        "Address": "57 Test Street, Test, UK",
        "Location": {
            "Latitude": 61.2122,
            "Longitude": -4.31111,
            "Zoom": 13,
            "Icon": null,
            "Format": 0,
            "Api": null,
            "SearchTyped": null
        },
        "Id": 1723,
        "Name": "B&C Inc"
    },
]

These are the classes to map to:

public class MemberDto
{
    public int Id { get; set; }
    public string? Name { get; set; }
    public string? CompanyProfile { get; set; }
    public string? Address { get; set; }
    public Location? Location { get; internal set; }
}

public class Location
{
    public decimal Latitude { get; set; }
    public decimal Longitude { get; set; }
}

This is the deserialize code:

var result = await response.Content.ReadAsStringAsync();
var members = JsonConvert.DeserializeObject<List<MemberDto>>(result);

I know I can use ReadFromJsonAsync<List<MemberDto>>() as well but using ReadFromString so I can check the json before deserializing. Anyway the result is exactly the same for ReadFromJsonAsync.

Everything except Location is deserialized successfully

Anyone know what the issue is?

CodePudding user response:

Remove the internal access modifier in the setter of Location.

public Location? Location { get; set; } 
  • Related