我有一个JSON响应,我试图用RestSharp来实现,它看起来像这样:
{"devices":[{"device":{"id":7,"deviceid":"abc123","name":"Name"}},
{"device":{"id":1,"deviceid":"def456","name":"Name"}}],
"total":2,
"start":0,
"count":2}
根据我找到的一些建议,我试着像这样设置我的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; }
}
然后我的执行是这样的:
// execute the request
var response = client.Execute<DevicesList>(request);
然而,response.Data
是NULL,我尝试了其他变体,但没有成功。
那么,在这种情况下应该使用什么样的类结构和Map呢?我也尝试过不使用额外的DeviceContainer
类。
谢谢你的帮助
6条答案
按热度按时间aiazj4mn1#
我有一个稍微不同的问题时,我的封装POCO包含一个数组..
将其从
Devices[]
更改为List<Devices>
解决了问题,并正确地进行了验证。mkshixfv2#
RestSharp only 对属性进行操作,它不会转换为字段,因此请确保将
Devices
和Device
字段转换为属性。另外,仔细检查响应的
Content-Type
,如果响应是非默认的,RestSharp可能根本不使用Jsonalizer。请参阅我在RestSharp客户端上的回答,当解析JSON响应时,所有属性都返回为nullmklgxw1f3#
我遇到的事情是,它不工作,如果你使用的接口,如:IELTS或IList,它必须是一个具体类型。
这将不起作用,因为它对其他一些json序列化器,如json.net。
应该是这样的
bhmjp9jg4#
RestShartp不支持DataAnnotation/DataMember,请重命名您的属性,但不要使用maj:
不要忘记
{get; set;}
;).daupos2t5#
我的问题完全不同,我天真地认为
JsonDeserializer
支持JsonProperty
属性,但事实并非如此。因此,当试图将它失败了。.但是将
AvailableUserDatas
更改为AvailableUserData
足以让事情开始工作。t0ybt7op6#
在.Net Core中,你可以使用native attribute(因为Newtonsoft已被弃用):
因此,可以使用您想要的任何属性名称。