C# 如何在RESTfulWebAPI中传递List对象类

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; } }

我需要在RESTfulWebAPI中传递类的list对象。但我在web api中接收到
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对象下传递文档列表。