Jestem całkiem nowy dla usług RESTful WCF, więc weź ze mną. Próbuję zbudować prostą usługę RESTful WCF, która zwraca listę studentów jako odpowiedź json. Wszystko działa dobrze, aż do momentu, w którym spróbuję przekonwertować ciąg json z powrotem na listę obiektów Ucznia na kliencie.RESTful odpowiedź json pakowania WCF z nazwą metody
Oto mój kontrakt operacja:
[OperationContract]
[WebGet(UriTemplate = "Students/", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
public List<Student> FetchStudents()
{
//Fetch and return students list
}
kod Klient:
static void Main(string[] args)
{
HttpClient client = new HttpClient("http://localhost/StudentManagementService/StudentManagement.svc/");
response = client.Get("Students/");
response.EnsureStatusIsSuccessful();
JavaScriptSerializer json_serializer = new JavaScriptSerializer();
string str = response.Content.ReadAsString();
List<Student> st = json_serializer.Deserialize<List<Student>>(str);
}
Kod ten oczywiście nie powiedzie się, ponieważ ciąg json zwrócony przez usługę wygląda jak poniżej:
{"FetchStudentsResult":[{"Course":"BE","Department":"IS","EmailID":"[email protected]","ID":1,"Name":"Vinod"}]}
Z jakiegoś powodu odpowiedź json jest pakowana wewnątrz FetchStudentsResult. Teraz w trybie debugowania, jeśli zdecydowanie usunę ten wrap FetchStudentsResult, moja deserializacja działa doskonale.
Próbowałem DataContractJsonSerializer, ale wynik jest dokładnie taki sam. Czy ktoś może mi powiedzieć, czego mi brakuje?
Dzięki Vinod Twoje rozwiązanie pomogło mi; Jesteś ratownikiem życia. –