Robert Rachita
Robert Rachita

Reputation: 85

Json Deserialization in an ASP.NET not working properly

I have an API that returns the following response as string

[
 {
    "id": "62a9f8f90346133662624bd3",
    "referenceID": "test1",
    "additionalInfoList": ["string"]
 },
 {
    "id": "62a9fba50346133662624bd4",
    "referenceID": "111",
    "additionalInfoList": ["string"]
 }
]

edit: where the exact formatting of the string is as follows with escaping backslashes:

"[{\"id\":\"62a9f8f90346133662624bd3\",\"referenceID\":\"test1\",\"additionalInfoList\":[\"string\"]},{\"id\":\"62a9fba50346133662624bd4\",\"referenceID\":\"111\",\"additionalInfoList\":[\"string\"]}]"

and the following class model

public class IncidentModel
{
    public string id { get; set; }
    public string referenceID { get; set; }
    public List<string> AdditionalInfoList { get; set; }
}

The problem arises in the code to deserialize. While I get a list with 2 elements, there is no data, only some generic metadata and fields that are not part of the model.

public async Task<JsonResult> OnGetIncidentsAsync()
    {
        List<IncidentModel> incidents = new List<IncidentModel>();
        using (var httpClient = new HttpClient())
        {
            using (HttpResponseMessage response = await httpClient.GetAsync("api/Incident/GetAllIncidents.json/"))
            {
                string apiResponse = await response.Content.ReadAsStringAsync();
                
                incidents = JsonConvert.DeserializeObject<List<IncidentModel>>(apiResponse);
            }
        }
        return new JsonResult(incidents);
    }

The attached image shows the data inside incidents. How can I solve this?enter image description here

Upvotes: 0

Views: 447

Answers (1)

Robert Rachita
Robert Rachita

Reputation: 85

So it turns out in Pages, I had a page named Incident. Because I use Razor pages, this page had a Model, named IncidentModel.cshtml.cs which was overriding the IncidentModel.cs from the Models folder. Renaming the model fixed the problem.

Upvotes: 1

Related Questions