Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

RestSharp Deserialization with JSON Array

Tags:

json

c#

restsharp

I have a JSON response that I'm trying to deserialize with RestSharp, and it looks like this:

{"devices":[{"device":{"id":7,"deviceid":"abc123","name":"Name"}},
            {"device":{"id":1,"deviceid":"def456","name":"Name"}}],
 "total":2,
 "start":0,
 "count":2}

Based off of some suggestions I've found, I've tried to setup my POCO like this:

public class DevicesList
{
    public List<DeviceContainer> Devices;
}

public class DeviceContainer
{
    public Device Device;
}

public class Device
{
    public int Id { get; set; }
    public string DeviceId { get; set; }
    public string Name { get; set; }
}

And then my execution looks like this:

// execute the request
var response = client.Execute<DevicesList>(request);

However, response.Data is NULL, and I've tried other variations with no luck.

So, what class structure and mapping should be used for this situation? I've also tried this without the extra DeviceContainer class.

Thanks for the help.

like image 656
Garrett Vlieger Avatar asked Apr 22 '13 21:04

Garrett Vlieger


2 Answers

RestSharp only operates on properties, it does not deserialize to fields, so make sure to convert your Devices and Device fields to properties.

Also, double check the Content-Type of the response, if the responses is something non-default, RestSharp may not uses the JsonDeserializer at all. See my answer on RestSharp client returns all properties as null when deserializing JSON response

like image 37
Pete Avatar answered Sep 29 '22 08:09

Pete


I had a slightly different issue when my deserialization POCO contained an array..

Changing it from Devices[] to List<Devices> resolved the issue and it deserialized correctly.

like image 143
Boycs Avatar answered Sep 29 '22 10:09

Boycs