Chcę użyć ReadAsAsync() w moim projekcie mvc z .net 4.0. Wynik jest zerowy.Używanie ReadAsAsync <T>() do deserializacji złożonego obiektu Json
Gdybym wprowadzić URI zająć bar, wynik w chromie jak (nazwy zmiennych są zmienione):
<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>
Gdybym użyć instrukcji w kodzie:
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;
}
wiadomość pochodzi w formacie ciąg jako "{\"MyListResponse\":{\"customerSessionId\"...}"
odpowiadający obiekt jSON jako:
{"MyListResponse":
{"customerSessionId":"xxcustomerSessionIdxx",
"numberOfRecordsRequested":0,
"moreResultsAvailable":false,
"MyList":
{"@size":"1",
"@activePropertyCount":"1",
"MySummary":
{"@order":"0",
"id":1234,
"name":"...",
.
.
}
}
}
}
a właściwości result1 i result2 są wartościami pustymi lub domyślnymi. Definicje klas są poniżej. Chcę przeczytać treść jako obiekt, ale nie mogłem. Co radzisz rozwiązać? Co ja robię źle? Z góry dziękuję.
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; }
}
Możesz uprościć to jeszcze bardziej 'output = oczekiwać na odpowiedź.Content.ReadAsAsync ();' ' – Nkosi