Asp.NETWebAPI中的Post JSON数组

Asp.NETWebAPI中的Post JSON数组,asp.net,json,asp.net-web-api,Asp.net,Json,Asp.net Web Api,大家好,我是ASP.netwebapi新手,我想发布JSON数组数据以获取任何响应 我的JSON POST数组格式是 { "User_Id":"admi12n@1234","Key_Code":"3F-47-AB-84-9F-EB-D6-6B-9C-62-CC-85-98-4D-28-6B", "ProductDetails": [ {"Product_Id":"ELT-7035","Price":"999","Quantity":"5"}, {"

大家好,我是
ASP.netwebapi
新手,我想发布
JSON
数组数据以获取任何响应

我的JSON POST数组格式是

{
    "User_Id":"admi12n@1234","Key_Code":"3F-47-AB-84-9F-EB-D6-6B-9C-62-CC-85-98-4D-28-6B",
    "ProductDetails": [
        {"Product_Id":"ELT-7035","Price":"999","Quantity":"5"},
        {"Product_Id":"ELT-1254","Price":"1024","Quantity":"3"}
    ]
}
我希望得到如下回应

{
    "User_Id":"admi12n@1234","Key_Code":"3F-47-AB-84-9F-EB-D6-6B-9C-62-CC-85-98-4D-28-6B",
    "OrderID":"Ord-021","Name":"Sabyasachi"
    "ProductDetails": [
        {"Product_Id":"ELT-7035","Price":"999","Quantity":"5"},
        {"Product_Id":"ELT-1254","Price":"1024","Quantity":"3"}
    ]
}
public class Order
    {
        [Key]
        public long ID { get; set; }
        public string Order_Id { get; set; }
        public string Product_Id { get; set; }
        public long Quantity { get; set; }
        public long Amount { get; set; }
        public string User_Id { get; set; }
        public string Key_Code { get; set; }
        public DateTime Order_Date { get; set; }
        public DateTime Modified_Date { get; set; }
    }
public class Product
    {
        [Key]
        public int Id { get; set; }
        public string Product_Code { get; set; }
        public string Product_Name { get; set; }
        public string Product_Category { get; set; }
        public string Product_Description { get; set; }
        public string Quantity { get; set; }
        public string Price { get; set; }
        public string Image { get; set; }
        public DateTime Created_Date { get; set; }
        public DateTime Modified_Date { get; set; }
    }
public HttpResponseMessage PostOrder([FromBody] Order_Listing orderData)
{
    orderData = repository.Add(orderData);
    var response = Request.CreateResponse<Order_Listing>(HttpStatusCode.Created, orderData);
    string uri = Url.Link("DefaultApi", new { customerID = orderData.ID });
    response.Headers.Location = new Uri(uri);
    return response;
}
我从发布的
用户Id
生成
OrderID
作为随机变量和
Name
。在这里,我想发布一个订单中的多个产品

我的订单如下

{
    "User_Id":"admi12n@1234","Key_Code":"3F-47-AB-84-9F-EB-D6-6B-9C-62-CC-85-98-4D-28-6B",
    "OrderID":"Ord-021","Name":"Sabyasachi"
    "ProductDetails": [
        {"Product_Id":"ELT-7035","Price":"999","Quantity":"5"},
        {"Product_Id":"ELT-1254","Price":"1024","Quantity":"3"}
    ]
}
public class Order
    {
        [Key]
        public long ID { get; set; }
        public string Order_Id { get; set; }
        public string Product_Id { get; set; }
        public long Quantity { get; set; }
        public long Amount { get; set; }
        public string User_Id { get; set; }
        public string Key_Code { get; set; }
        public DateTime Order_Date { get; set; }
        public DateTime Modified_Date { get; set; }
    }
public class Product
    {
        [Key]
        public int Id { get; set; }
        public string Product_Code { get; set; }
        public string Product_Name { get; set; }
        public string Product_Category { get; set; }
        public string Product_Description { get; set; }
        public string Quantity { get; set; }
        public string Price { get; set; }
        public string Image { get; set; }
        public DateTime Created_Date { get; set; }
        public DateTime Modified_Date { get; set; }
    }
public HttpResponseMessage PostOrder([FromBody] Order_Listing orderData)
{
    orderData = repository.Add(orderData);
    var response = Request.CreateResponse<Order_Listing>(HttpStatusCode.Created, orderData);
    string uri = Url.Link("DefaultApi", new { customerID = orderData.ID });
    response.Headers.Location = new Uri(uri);
    return response;
}
我的产品类别如下

{
    "User_Id":"admi12n@1234","Key_Code":"3F-47-AB-84-9F-EB-D6-6B-9C-62-CC-85-98-4D-28-6B",
    "OrderID":"Ord-021","Name":"Sabyasachi"
    "ProductDetails": [
        {"Product_Id":"ELT-7035","Price":"999","Quantity":"5"},
        {"Product_Id":"ELT-1254","Price":"1024","Quantity":"3"}
    ]
}
public class Order
    {
        [Key]
        public long ID { get; set; }
        public string Order_Id { get; set; }
        public string Product_Id { get; set; }
        public long Quantity { get; set; }
        public long Amount { get; set; }
        public string User_Id { get; set; }
        public string Key_Code { get; set; }
        public DateTime Order_Date { get; set; }
        public DateTime Modified_Date { get; set; }
    }
public class Product
    {
        [Key]
        public int Id { get; set; }
        public string Product_Code { get; set; }
        public string Product_Name { get; set; }
        public string Product_Category { get; set; }
        public string Product_Description { get; set; }
        public string Quantity { get; set; }
        public string Price { get; set; }
        public string Image { get; set; }
        public DateTime Created_Date { get; set; }
        public DateTime Modified_Date { get; set; }
    }
public HttpResponseMessage PostOrder([FromBody] Order_Listing orderData)
{
    orderData = repository.Add(orderData);
    var response = Request.CreateResponse<Order_Listing>(HttpStatusCode.Created, orderData);
    string uri = Url.Link("DefaultApi", new { customerID = orderData.ID });
    response.Headers.Location = new Uri(uri);
    return response;
}
我找不到邮寄订单的最佳方式

public Order Add(Order odrerDetails) //This will not give array of data for products
{
    using (var context = new EcommerceDBContext())
    {            
        odrerDetails.Order_Id = Helper.Random(7); //Generate random orderID from my class
        odrerDetails.Created_Date = DateTime.Now;
        odrerDetails.Modified_Date = DateTime.Now;
        //How to Save other details
        context.objOrderListing.Add(odrerDetails);
        context.SaveChanges();
        return odrerDetails;
    }
}
在API控制器中,我的代码如下

{
    "User_Id":"admi12n@1234","Key_Code":"3F-47-AB-84-9F-EB-D6-6B-9C-62-CC-85-98-4D-28-6B",
    "OrderID":"Ord-021","Name":"Sabyasachi"
    "ProductDetails": [
        {"Product_Id":"ELT-7035","Price":"999","Quantity":"5"},
        {"Product_Id":"ELT-1254","Price":"1024","Quantity":"3"}
    ]
}
public class Order
    {
        [Key]
        public long ID { get; set; }
        public string Order_Id { get; set; }
        public string Product_Id { get; set; }
        public long Quantity { get; set; }
        public long Amount { get; set; }
        public string User_Id { get; set; }
        public string Key_Code { get; set; }
        public DateTime Order_Date { get; set; }
        public DateTime Modified_Date { get; set; }
    }
public class Product
    {
        [Key]
        public int Id { get; set; }
        public string Product_Code { get; set; }
        public string Product_Name { get; set; }
        public string Product_Category { get; set; }
        public string Product_Description { get; set; }
        public string Quantity { get; set; }
        public string Price { get; set; }
        public string Image { get; set; }
        public DateTime Created_Date { get; set; }
        public DateTime Modified_Date { get; set; }
    }
public HttpResponseMessage PostOrder([FromBody] Order_Listing orderData)
{
    orderData = repository.Add(orderData);
    var response = Request.CreateResponse<Order_Listing>(HttpStatusCode.Created, orderData);
    string uri = Url.Link("DefaultApi", new { customerID = orderData.ID });
    response.Headers.Location = new Uri(uri);
    return response;
}
public HttpResponseMessage PostOrder([FromBody]Order\u列出orderData)
{
orderData=repository.Add(orderData);
var response=Request.CreateResponse(HttpStatusCode.Created,orderData);
字符串uri=Url.Link(“DefaultApi”,新的{customerID=orderData.ID});
response.Headers.Location=新Uri(Uri);
返回响应;
}

请帮助我如何实现这一点。

您的代码有几个问题:

  • 您的
    订单
    产品
    类不反映 你的JSON
  • Order
    类以1:1的比例包含产品详细信息 关系基于JSON,我假设您想要1:n关系
  • JSON中的属性必须与 在类中,否则它们将不会被映射
  • 将您的类更改为以下内容,它应该会起作用。 当然,您也可以更改JSON中的属性名称

    如果您不能或不想更改您的属性名称,请考虑使用DTOS < /P>

    public class Order
    {
        public string User_Id { get; set; }
        public string Key_Code { get; set; }
        public string OrderID { get; set; }
        public string Name { get; set; }
        public List<Product> ProductDetails { get; set; }
        // add the rest of your properties
    }
    
    public class Product
    {
        public string Product_Id { get; set; }
        public string Price { get; set; }
        public string Prd_Qty { get; set; }
        // add the rest of your properties
    }
    
    Api方法的签名看起来是错误的。什么是订单清单?这应该是
    订单
    ,除非它是DTO,否则在这种情况下,您需要一种方法从
    订单列表
    获取
    订单

    public HttpResponseMessage PostOrder([FromBody] Order orderData)
    {
        orderData = repository.Add(orderData);
        var response = Request.CreateResponse<Order_Listing>(HttpStatusCode.Created, orderData);
        string uri = Url.Link("DefaultApi", new { customerID = orderData.ID });
        response.Headers.Location = new Uri(uri);
        return response;
    }
    
    公共HttpResponseMessage PostOrder([FromBody]Order orderData) { orderData=repository.Add(orderData); var response=Request.CreateResponse(HttpStatusCode.Created,orderData); 字符串uri=Url.Link(“DefaultApi”,新的{customerID=orderData.ID}); response.Headers.Location=新Uri(Uri); 返回响应; }
    还有几句话:

  • 如果它确实是1:n关系,那么您可能需要一个属性
    Product.OrderId
  • 除列表外,
    订单
    类不应引用任何
    产品
  • 数量
    价格
    很可能不是
    字符串
    ,而是数值,例如
    十进制
  • 如果
    Order.ID
    是您的主键,那么拥有
    Order.ID
    确实令人困惑。考虑将其重命名为<代码>订单。
    我根据您的要求进行了更改,我的公共订单添加(订单详细信息)方法是什么?