【发布时间】:2016-10-03 18:39:24
【问题描述】:
我无法通过 JSON 将对象列表传递给 Web Api。
方法:
public HttpResponseMessage SubmitCourierRequest([FromBody]CRRequest request)
{
//code goes here
}
CRRequest 对象:
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类是什么样的? -
@MattRowland 为原始帖子添加了课程。
-
这是因为
MediaItem被标记为抽象,所以它不能被实例化,因为在调用时底层的具体类型是未知的。您是否有可以使用的具体类型(最简单/最快的解决方案)?否则,您将必须提供一个活页夹,该活页夹可以根据原始 json(或其他内容)识别正确的类型。如果您使用的是 json.net,请参阅stackoverflow.com/q/20995865/1260204。 -
@Igor Doh。就是这样。丹克。
标签: c# json asp.net-web-api2