C# 如何在RESTfulWebAPI中传递List对象类
我需要在RESTfulWebAPI中传递类的list对象。但我在web api中接收到C# 如何在RESTfulWebAPI中传递List对象类,c#,json,rest,serialization,asp.net-web-api,C#,Json,Rest,Serialization,Asp.net Web Api,我需要在RESTfulWebAPI中传递类的list对象。但我在web api中接收到null值。 下面是我在WebAPI中的代码 Public class RequestDto { private string _clientId; public string ClientId { get { return _clientId; } set { _clientId= value; } }
null
值。
下面是我在WebAPI中的代码
Public class RequestDto
{
private string _clientId;
public string ClientId
{
get { return _clientId; }
set { _clientId= value; }
}
private List<DeliveryDocument> _deliveryDocumentInfo;
public List<DeliveryDocument> DeliveryDocumentInfo
{
get { return _deliveryDocumentInfo; }
set { _deliveryDocumentInfo = value; }
}
}
public class DeliveryDocument
{
public string DocumentName { get; set; }
public string DocumentURL { get; set; }
}
public HttpResponseMessage PostSaveManifest([FromBody] RequestDto manifestRequest)
{
//here i am receiving null value in list parameter
}
公共类请求到
{
私有字符串_clientId;
公共字符串ClientId
{
获取{return\u clientId;}
设置{u clientId=value;}
}
私有列表deliveryDocumentInfo;
公共列表交付文档信息
{
获取{return\u deliveryDocumentInfo;}
设置{u deliveryDocumentInfo=value;}
}
}
公共类交付文档
{
公共字符串DocumentName{get;set;}
公共字符串DocumentURL{get;set;}
}
公共HttpResponseMessage PostSaveManifest([FromBody]RequestdToManifestRequest)
{
//这里我在列表参数中接收空值
}
下面是调用web api的代码
var values = new JObject();
values.Add("ClientId", "23824");
var DeliveryDocumentInfo = new List<DeliveryDocument>();
DeliveryDocumentInfo.Add(new DeliveryDocument { DocumentName = "Document Name", DocumentURL = "D:/Documnet/test.png" });
var serOut = JsonConvert.SerializeObject(DeliveryDocumentInfo);
values.Add("DeliveryDocumentInfo", serOut);
HttpContent content = new StringContent(values.ToString(), Encoding.UTF8, "application/json");
var responsesss = client.PostAsync(Constants.URLValue + "/api/Manifest", content).Result;
var values=new JObject();
添加(“客户ID”、“23824”);
var DeliveryDocumentInfo=新列表();
DeliveryDocumentInfo.Add(新的DeliveryDocument{DocumentName=“DocumentName”,DocumentURL=“D:/Documnet/test.png”});
var serOut=JsonConvert.SerializeObject(DeliveryDocumentInfo);
添加(“DeliveryDocumentInfo”,serOut);
HttpContent=newStringContent(values.ToString(),Encoding.UTF8,“application/json”);
var responsesss=client.PostAsync(Constants.URLValue+“/api/Manifest”,content).Result;
您发送的内容无法序列化为RequestDto类型。“值”是一个列表,它位于Dto对象中,但您的api需要Dto对象,而不仅仅是其中的列表。您发送的内容无法序列化为RequestDto类型。“值”是一个列表,它位于Dto对象中,但您的api需要Dto对象,而不仅仅是其中的列表。在Web api中创建RequestDto对象。根据OrenHaliva的评论
var manifest = new RequestDto();
manifest.ClientId = "23824";
var DeliveryDocumentInfo = new List<DeliveryDocument>();
DeliveryDocumentInfo.Add(new DeliveryDocument { DocumentName = "Document Name", DocumentURL = "D:/Documnet/test.png" });
manifest.DeliveryDocumentInfo = DeliveryDocumentInfo;
var serOut = JsonConvert.SerializeObject(manifest);
HttpContent content = new StringContent(serOut, Encoding.UTF8, "application/json");
var responsesss = client.PostAsync(Constants.URLValue + "/api/Manifest", content).Result;
var manifest=newrequestdto();
manifest.ClientId=“23824”;
var DeliveryDocumentInfo=新列表();
DeliveryDocumentInfo.Add(新的DeliveryDocument{DocumentName=“DocumentName”,DocumentURL=“D:/Documnet/test.png”});
manifest.DeliveryDocumentInfo=DeliveryDocumentInfo;
var serOut=JsonConvert.SerializeObject(清单);
HttpContent=newstringcontent(serOut,Encoding.UTF8,“application/json”);
var responsesss=client.PostAsync(Constants.URLValue+“/api/Manifest”,content).Result;
在Web API中创建RequestDto的对象。根据OrenHaliva的评论
var manifest = new RequestDto();
manifest.ClientId = "23824";
var DeliveryDocumentInfo = new List<DeliveryDocument>();
DeliveryDocumentInfo.Add(new DeliveryDocument { DocumentName = "Document Name", DocumentURL = "D:/Documnet/test.png" });
manifest.DeliveryDocumentInfo = DeliveryDocumentInfo;
var serOut = JsonConvert.SerializeObject(manifest);
HttpContent content = new StringContent(serOut, Encoding.UTF8, "application/json");
var responsesss = client.PostAsync(Constants.URLValue + "/api/Manifest", content).Result;
var manifest=newrequestdto();
manifest.ClientId=“23824”;
var DeliveryDocumentInfo=新列表();
DeliveryDocumentInfo.Add(新的DeliveryDocument{DocumentName=“DocumentName”,DocumentURL=“D:/Documnet/test.png”});
manifest.DeliveryDocumentInfo=DeliveryDocumentInfo;
var serOut=JsonConvert.SerializeObject(清单);
HttpContent=newstringcontent(serOut,Encoding.UTF8,“application/json”);
var responsesss=client.PostAsync(Constants.URLValue+“/api/Manifest”,content).Result;
您是否尝试创建RequestDto而不是像您那样创建jobject?不,我没有。。但我会尝试..@OrenHaliva它与RequestDto对象一起工作。感谢这是因为在序列化集合时,您将集合作为字符串传递到JObject
。serOut看起来像“DeliveryDocumentInfo”:“[{}]”
。这就是为什么在解析集合时该集合为空。但是你已经找到了工作,所以一切都很好。只是想让您知道错误在哪里。您是否尝试创建RequestDto而不是像您那样创建jobject?不,我没有这样做。。但我会尝试..@OrenHaliva它与RequestDto对象一起工作。感谢这是因为在序列化集合时,您将集合作为字符串传递到JObject
。serOut看起来像“DeliveryDocumentInfo”:“[{}]”
。这就是为什么在解析集合时该集合为空。但是你已经找到了工作,所以一切都很好。只是想让你知道错误在哪里不是那样的。。。我只传递单个RequestDto对象,但在RequestDto对象下我传递文档列表。不是这样。。。我只传递单个RequestDto对象,但在RequestDto对象下传递文档列表。