将带有列表的对象传递给Web API
本文关键字:Web API 对象 列表 | 更新日期: 2023-09-27 18:11:23
我在通过JSON向Web Api传递对象列表时遇到麻烦。
方法:
public HttpResponseMessage SubmitCourierRequest([FromBody]CRRequest request)
{
//code goes here
}
请求对象:
public class CRRequest
{
public List<MediaItem> MediaItems = new List<MediaItem>();
public DistributionList DistributionList { get; set; }
public string SendTo { get; set; }
public string Subject { get; set; }
public string Comments { get; set; }
}
媒体项类:
public abstract class MediaItem : INotifyPropertyChanged
{
[DataMember]
public virtual string ID { get; set; }
[DataMember]
public double Longitude { get; set; }
[DataMember]
public double Latitude { get; set; }
[DataMember]
public int AgencyID { get; set; }
...
}
我传递的json:
{
"SendTo": "bob@bob.com",
"Subject": "asda",
"Comments": "asdasd",
"ExpirationDate": "2016-11-01",
"DistributionList": {
"DistributionListID": "4"
},
"MediaItems": [{
"ID": "001"
},
{
"ID": "002"
}]
}
当我调试该方法时,我可以得到除了媒体项之外的所有内容,这给了我一个0的计数。我遗漏了什么吗?
这是因为MediaItem
被标记为抽象,所以它不能被实例化,因为底层的具体类型在调用时是未知的。
你有一个具体的类型可以代替(最简单/最快的解决方案)吗?否则,您将不得不提供一个绑定器,它可以根据原始json(或其他东西)识别正确的类型。如果您使用的是json.net
,请参阅反序列化JSON抽象类