I'm trying to use RestSharp to get a List from an API and I'm getting this error:
System.Text.Json.JsonException: 'The JSON value could not be converted to System.Collections.Generic.List`1[VP_Sysmac.ConsoleTest.OperariModel]. Path: $ | LineNumber: 0 |
I can access the same API using Postman and I'm getting the payload I posted below and Status 200 OK.
If I set up a breakpoint this is the internal value of the jsonString:
"\"[\\r\\n {\\r\\n \\\"IdOperari\\\": 0,\\r\\n \\\"Operari\\\": \\\"Varis\\\",\\r\\n \\\"TagRfid\\\": \\\"AAA\\\"\\r\\n },\\r\\n {\\r\\n \\\"IdOperari\\\": 38,\\r\\n \\\"Operari\\\": \\\"Pujol Costa, Josep\\\",\\r\\n \\\"TagRfid\\\": \\\"AAA\\\"\\r\\n },\\r\\n {\\r\\n \\\"IdOperari\\\": 41,\\r\\n \\\"Operari\\\": \\\"Barea González, Antonio\\\",\\r\\n \\\"TagRfid\\\": \\\"AAA\\\"\\r\\n },\\r\\n {\\r\\n \\\"IdOperari\\\": 42,\\r\\n \\\"Operari\\\": \\\"Basora Grau, Àngel\\\",\\r\\n \\\"TagRfid\\\": \\\"AAA\\\"\\r\\n },\\r\\n {\\r\\n \\\"IdOperari\\\": 44,\\r\\n \\\"Operari\\\": \\\"Roy Torras, Jordi\\\",\\r\\n \\\"TagRfid\\\": \\\"AAA\\\"\\r\\n }\\r\\n]\""
If I use the JSON visualizer I get exactly the same result than using Postman. If I use a string variable with the json value I can deserialize it without any problem.
The model
internal class OperariModel
{
public int IdOperari { get; set; }
public string? Operari { get; set; }
public string? TagRfid { get; set; }
}
Accessing rest API
static async Task Main(string[] args)
{
string baseUrl = "http://myserver/apisysmac/api";
var options = new RestClientOptions(baseUrl)
{
RemoteCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true
};
RestClient client = new RestClient(options);
var request = new RestRequest($"{baseUrl}/Operaris");
var response = await client.GetAsync(request);
if (response.StatusCode == System.Net.HttpStatusCode.OK)
{
string json = response.Content.ToString();
var operaris = JsonSerializer.Deserialize<List<OperariModel>>(json);
}
}
Payload received using Postman
[
{
"IdOperari": 0,
"Operari": "Varis",
"TagRfid": "AAA"
},
{
"IdOperari": 38,
"Operari": "Pujol Costa, Josep",
"TagRfid": "AAA"
},
{
"IdOperari": 41,
"Operari": "Barea González, Antonio",
"TagRfid": "AAA"
},
{
"IdOperari": 42,
"Operari": "Basora Grau, Àngel",
"TagRfid": "AAA"
},
{
"IdOperari": 44,
"Operari": "Roy Torras, Jordi",
"TagRfid": "AAA"
}
]