Gar*_*ger 19 c# json restsharp
我有一个JSON响应,我正在尝试使用RestSharp反序列化,它看起来像这样:
{"devices":[{"device":{"id":7,"deviceid":"abc123","name":"Name"}},
{"device":{"id":1,"deviceid":"def456","name":"Name"}}],
"total":2,
"start":0,
"count":2}
Run Code Online (Sandbox Code Playgroud)
基于我发现的一些建议,我试图像这样设置我的POCO:
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; }
}
Run Code Online (Sandbox Code Playgroud)
然后我的执行看起来像这样:
// execute the request
var response = client.Execute<DevicesList>(request);
Run Code Online (Sandbox Code Playgroud)
但是,response.Data是NULL,我尝试了其他变种没有运气.
那么,这种情况应该使用什么类结构和映射?我没有额外的DeviceContainer课程也试过这个.
谢谢您的帮助.
Boy*_*ycs 29
当我的反序列化POCO包含一个数组时,我遇到了一个稍微不同的问题.
将其更改Devices[]为List<Devices>解决问题并正确反序列化.
Pet*_*ete 18
RestSharp 只有在性能运行时,它不会反序列化领域,所以一定要确保你的转化Devices和Device字段属性.
另外,仔细检查Content-Type响应,如果响应是非默认的,RestSharp可能根本不使用JsonDeserializer.请参阅我在RestSharp客户端上的答案,在反序列化JSON响应时将所有属性返回为null
我遇到的问题是,如果您使用 IEnumerable 或 IList 等接口,它就不起作用,它必须是具体类型。
这将不起作用,就像其他一些 json 序列化程序(例如 json.net)一样。
public class DevicesList
{
public IEnumerable<DeviceContainer> Devices { get; set; }
}
public class DeviceContainer
{
...
}
Run Code Online (Sandbox Code Playgroud)
它必须是这样的:
public class DevicesList
{
public List<DeviceContainer> Devices { get; set; }
}
public class DeviceContainer
{
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24584 次 |
| 最近记录: |