如何将列表obj转换为client.PostAsJsonAsync

时间:2017-12-21 01:57:48

标签: c# asp.net-mvc

如何将list obj转换为client.PostAsJsonAsync

班级模特

public class CheckStatusModel
{
    public int OBJID { get; set; }
    public string SUPID { get; set; }
    public string STATUSPTC { get; set; }  
    public int DATEACTIVESUP { get; set; }
}

public class CheckStatus
{
    public CheckStatusModel Data { get; set; }
    public string StatusCode { get; set; }
}

使用
发送查找web api REST服务资源的请求    HttpClient的**

using (var client = new HttpClient())
{
     client.BaseAddress = new Uri(Baseurl);
     client.DefaultRequestHeaders.Clear();
     client.DefaultRequestHeaders.Accept.Add(new 
     MediaTypeWithQualityHeaderValue("application/json"));
     HttpResponseMessage response = await client.PostAsJsonAsync("api/RPDeployment/BIL_CFP_BOX_CHECK_STATUSPTC", checkStatusParam);
     if(response.IsSuccessStatusCode)
       {
            var EmpResponse = response.Content.ReadAsStringAsync().Result;
            ListStatusPTC = JsonConvert.DeserializeObject<List<CheckStatus>>(EmpResponse);// not convert ????

       }
 }

EmpResponse

{
  "data": [**
    {
      "OBJID": 1012540462,
      "SUPID": 1041252952,
      "STATUSPTC": 1,
      "DATEACTIVESUP": 0
    }
  **],
  "StatusCode": 200
}

请帮帮我?

1 个答案:

答案 0 :(得分:0)

哦,我明白了。您尝试将对象(由{}表示)反序列化为一个列表(在JSON中,由[]表示)。

您需要更改CheckStatus课程,如下所示:

public class CheckStatus
{
    public List<CheckStatusModel> Data { get; set; } // data is an array so this needs to be some kind of collection
    public string StatusCode { get; set; }
}

并像这样反序列化:

ListStatusPTC = JsonConvert.DeserializeObject<CheckStatus>(EmpResponse); // the JSON contains an object, so this needs to deserialize to an object. you can't deserialize to a list.