c# - net - restsharp timeout
Deserialización RestSharp con JSON Array (4)
Algo con lo que me topé es que no funciona si utiliza interfaces como: IEnumerable o IList, tiene que ser un tipo concreto.
Esto no funcionará, como ocurre con otros serializadores json como json.net.
public class DevicesList
{
public IEnumerable<DeviceContainer> Devices { get; set; }
}
public class DeviceContainer
{
...
}
Tendría que ser algo como esto:
public class DevicesList
{
public List<DeviceContainer> Devices { get; set; }
}
public class DeviceContainer
{
...
}
Tengo una respuesta JSON que estoy intentando deserializar con RestSharp , y se ve así:
{"devices":[{"device":{"id":7,"deviceid":"abc123","name":"Name"}},
{"device":{"id":1,"deviceid":"def456","name":"Name"}}],
"total":2,
"start":0,
"count":2}
Basado en algunas sugerencias que he encontrado, he intentado configurar mi POCO de esta manera:
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; }
}
Y luego mi ejecución se ve así:
// execute the request
var response = client.Execute<DevicesList>(request);
Sin embargo, response.Data
es NULL, y he intentado otras variaciones sin suerte.
Entonces, ¿qué estructura de clase y mapeo deberían usarse para esta situación? También he intentado esto sin la clase DeviceContainer
extra.
Gracias por la ayuda.
RestSharp solo opera en propiedades, no se deserializa en campos, así que asegúrese de convertir sus Devices
y campos de Device
en propiedades.
Además, vuelva a verificar el Content-Type
de Content-Type
de la respuesta, si las respuestas no son predeterminadas, es posible que RestSharp no use el JsonDeserializer en absoluto. Ver mi respuesta en el cliente RestSharp devuelve todas las propiedades como nulas al deserializar la respuesta JSON
RestShartp no admite DataAnnotation / DataMember, cambie el nombre de sus propiedades sin may:
- Dispositivos -> dispositivos
- Dispositivo -> dispositivo
Y no olvides el {get; set;}
{get; set;}
;).
Tuve un problema ligeramente diferente cuando mi POCO de deserialización contenía una matriz.
Cambiarlo de Devices[]
a List<Devices>
resolvió el problema y se deserializó correctamente.