我有一个 web-api Controller ,它接受单个 Json 对象 Post(当前使用 Postman 作为我的用户代理)。
这是我的发布方法:
private AH_ODS_DB_Entities db = new AH_ODS_DB_Entities();
[ResponseType(typeof(Sales))]
public HttpResponseMessage PostSales(Sales Sales, [FromUri] string auth)
{
try
{
if (ModelState.IsValid)
{
if (auth == "KDI")
{
Int64 rs = db.Sales_.Where(sl => sl.Serial == Sales.Serial).Count();
if (1 == rs)
{
return Request.CreateErrorResponse(HttpStatusCode.Conflict, " Duplicate Found!");
}
else
{
db.Sales_.Add(Sales);
db.SaveChanges();
return Request.CreateErrorResponse(HttpStatusCode.OK, "Added!");
}
}
else
{
return Request.CreateResponse(HttpStatusCode.Unauthorized, "Unauthorized Access!");
}
}
else
{
return Request.CreateResponse(HttpStatusCode.InternalServerError, "Something's wrong with the JSON model you sent me.");
}
}
catch (Exception ex)
{
return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message);
}
}
这是 Json:
{
"ExtSerial": "AH0000002",
"Date": "2015-03-01",
"CustomerRefNbr": "JPM0001",
"Description": "2015 FEBRUARY RENTAL 2015 FEBRUARY RENTAL",
"Customer": "TRDE0065",
"Amount": 17989.51,
"AQ_Branch": "KDI",
"AQ_COA": "4100503000",
"LineSubAccount": "OPMOPN000",
"LineTaxCategory": "JPMTAX",
"LineQuantity": 1,
"LineUnitPrice": 400000,
"AQ_PostStatus": 1,
"AQ_StatusDate": "2015-03-01",
"DTS": "2015-03-01"
}
它工作得很好,但我想让我的 post 方法可以选择接受多个 Json 数据数组
类似这样的事情:
[{"Id1":3,"Id2":76,"Id3":19},{"Id1":56,"Id2":87,"Id3":94},{"Id1":976,"Id2":345,"Id3":7554}]
我尝试将我的销售模型参数作为列表<>,但它无法读取我的销售实体db.Sales_.Add(Sales);
并且它无法获取我的销售中的表序列Int64 rs = db.Sales_.Where(sl => sl.Serial == Sales.Serial).Count();
顺便说一句,我正在使用 EF6 和 LINQ。我真的需要你的帮助,我知道这是一个简单的问题,但我真的陷入困境。
最佳答案
您无法在 Web API POST 操作中接收多个 JSON 对象。这是因为它只能反序列化 POST 负载一次。
唯一的解决方案是发布(客户端)接收(Web 操作参数)一个具有其他对象作为属性的对象。
你的问题不太好理解,但是我会尽力给你一个更具体的答案。您需要定义一个像这样的类作为您的 Web api 参数:
public class SalesAndIds
{
public Sales Sales { get; set; }
public List<Ids> IdsList { get; set; }
public class Ids
{
public int Id1 { get; set; }
public int Id2 { get; set; }
public int Id3 { get; set; }
}
}
您从 JavaScript 发布的对象必须如下所示:
{
Sales: { /* the sales object*/ },
IdsList: [ /* the array with the ids list */ ]
}
关于json - 如何在 web api 中发布多个 json 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29960024/