Tôi muốn sử dụng ReadAsAsync() trong dự án mvc của tôi với .net 4.0. Kết quả là null.Sử dụng ReadAsAsync <T>() để deserialize đối tượng Json phức tạp
Nếu tôi nhập uri thanh địa chỉ, kết quả trong chrome như (tên thẻ được thay đổi):
<ns2:MyListResponse xmlns:ns2="blablabla">
<customerSessionId>xxcustomerSessionIdxx</customerSessionId>
<numberOfRecordsRequested>0</numberOfRecordsRequested>
<moreResultsAvailable>false</moreResultsAvailable>
<MyList size="1" activePropertyCount="1">
<MySummary order="0">
<id>1234</id>
<name>...</name>
.
.
</MySummary>
</MyList>
</ns2:MyListResponse>
Nếu tôi sử dụng câu lệnh trong mã:
using (var client = new HttpClient())
{
var response = client.GetAsync(apiUri).Result;
var message = response.Content.ReadAsStringAsync().Result;
var result1 = JsonConvert.DeserializeObject<MyListResponse>(message);
var result2 = response.Content.ReadAsAsync<MyListResponse>().Result;
}
thông điệp đến ở định dạng chuỗi như "{\"MyListResponse\":{\"customerSessionId\"...}"
tương ứng với một đối tượng jSON như:
{"MyListResponse":
{"customerSessionId":"xxcustomerSessionIdxx",
"numberOfRecordsRequested":0,
"moreResultsAvailable":false,
"MyList":
{"@size":"1",
"@activePropertyCount":"1",
"MySummary":
{"@order":"0",
"id":1234,
"name":"...",
.
.
}
}
}
}
và các thuộc tính của kết quả 1 và kết quả2 là các giá trị rỗng hoặc mặc định. Định nghĩa lớp học dưới đây. Tôi muốn đọc nội dung như một đối tượng nhưng tôi không thể. Bạn có lời khuyên nào để giải quyết vấn đề này? Tôi đang làm gì sai? Cảm ơn trước.
public class MySummary
{
public int @Order { get; set; }
public string Id { get; set; }
public string Name { get; set; }
.
.
}
public class MyList
{
public int @Size { get; set; }
public int @ActivePropertyCount { get; set; }
public MySummary MySummary{ get; set; }
}
public class MyListResponse
{
public string CustomerSessionId { get; set; }
public int NumberOfRecordsRequested { get; set; }
public bool MoreResultsAvailable { get; set; }
public MyList MyList { get; set; }
}
Bạn có thể đơn giản hóa điều này hơn nữa 'output = await response.Content.ReadAsAsync ();' – Nkosi