我很难通过RestSharp反序列化从Web服务返回的数据。以下是POST请求返回的数据。
{
"responseCPUTime": "0",
"response": "PASS",
"responseFor": "getSalesOrders",
"responseData": {
"salesOrders": [
{
"loadStatus": "",
"comments": "",
"modifyDate": "20180130",
"custShipToID": "",
"invoiceCount": "0",
"custBillToID": "WINDJ",
"invoiceAmount": "12280.00",
"pickDate": "20180204",
"warehouse": "~D",
"custName": "WINN DIXIE JACKSONVILLE",
"modifyTime": "102614",
"loadID": "",
"createTime": "075610",
"createdBy": "RGN",
"custPONum2": "",
"modifiedBy": "KAL",
"SONum": "00855494",
"deliveryDate": "20180205",
"tripNumber": "",
"custPONum": "66523",
"status": "O",
"createDate": "20180125"
},
{
"loadStatus": "",
"comments": "",
......
}
],
},
"responseMessage": ""
}
这是我试图将数据反序列化的模型。
型号:
public class SalesOrder
{
public string loadStatus { get; set; }
public string comments { get; set; }
public string modifyDate { get; set; }
public string custShipToID { get; set; }
public string invoiceCount { get; set; }
public string custBillToID { get; set; }
public string invoiceAmount { get; set; }
public string pickDate { get; set; }
public string warehouse { get; set; }
public string custName { get; set; }
public string modifyTime { get; set; }
public string loadID { get; set; }
public string createTime { get; set; }
public string createdBy { get; set; }
public string custPONum2 { get; set; }
public string modifiedBy { get; set; }
public string SONum { get; set; }
public string deliveryDate { get; set; }
public string tripNumber { get; set; }
public string custPONum { get; set; }
public string status { get; set; }
public string createDate { get; set; }
}
public class ResponseData
{
public List<SalesOrder> salesOrders { get; set; }
}
public class RootObject
{
public string responseCPUTime { get; set; }
public string response { get; set; }
public string responseFor { get; set; }
public ResponseData responseData { get; set; }
public string responseMessage { get; set; }
}
这是成功提取数据但似乎无法加载到SalesOrderModel列表中的类。
类别:
public List<SalesOrderModel> GetSalesOrders(string company, string custBillToID, string startShipDate, string endShipDate)
{
var client = new RestClient("https://xxxxxxx.xxxxxx.com");
var request = new RestRequest("xxx/services", Method.POST);
request.AddHeader("header", @"accept: application/json
accept-encoding: gzip, deflate
accept-language: en-US, en; q=0.8
content-type: application/json
user-agent: Mozilla/5.0(Windows NT 10.0; Win64; x64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36");
request.AddParameter("appId", "xxxxxx");
request.AddParameter("command", "getSalesOrders");
request.AddParameter("company", "0007");
request.AddParameter("startDeliveryDate", "20180205");
request.AddParameter("endDeliveryDate", "20180205");
request.AddParameter("status", "O");
IRestResponse <List<SalesOrderModel>> response = client.Execute<List<SalesOrderModel>>(request);
return response.Data;
}
有人能指出我如何正确映射返回到模型类的数据吗?
由于
编辑:我更新了我的模型以包含各种各样的“包装”。
现在我的问题是,在视图中访问此数据的最佳方法是什么?
修改: 视图:
@model DirectOrderTracker.Models.RootObject
@foreach (var item in @Model.responseData.salesOrders)
{
@item.custBillToID
}
答案 0 :(得分:2)
您的json和反序列化的模型是不可比的。您正在尝试将非集合json反序列化为类似List
的集合。所以,像这样修改你的模型;
public class SalesOrder
{
public string loadStatus { get; set; }
public string comments { get; set; }
public string modifyDate { get; set; }
public string custShipToID { get; set; }
public string invoiceCount { get; set; }
public string custBillToID { get; set; }
public string invoiceAmount { get; set; }
public string pickDate { get; set; }
public string warehouse { get; set; }
public string custName { get; set; }
public string modifyTime { get; set; }
public string loadID { get; set; }
public string createTime { get; set; }
public string createdBy { get; set; }
public string custPONum2 { get; set; }
public string modifiedBy { get; set; }
public string SONum { get; set; }
public string deliveryDate { get; set; }
public string tripNumber { get; set; }
public string custPONum { get; set; }
public string status { get; set; }
public string createDate { get; set; }
}
public class ResponseData
{
public List<SalesOrder> salesOrders { get; set; }
}
public class JsonObject
{
public string responseCPUTime { get; set; }
public string response { get; set; }
public string responseFor { get; set; }
public ResponseData responseData { get; set; }
public string responseMessage { get; set; }
}
并将其反序列化为JsonObject
;
IRestResponse<JsonObject> response = client.Execute<JsonObject>(request);