Soy bastante nuevo en los servicios RESTful WCF, así que tengan paciencia conmigo. Estoy tratando de construir un servicio RESTful WCF simple que devuelva una lista de estudiantes como respuesta json. Todo funciona bien hasta el punto en que trato de convertir la cadena json a la lista de objetos de Estudiante en el cliente.RESTful WCF wrapping json response con el nombre de método
Aquí está mi contrato de operación:
[OperationContract]
[WebGet(UriTemplate = "Students/", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
public List<Student> FetchStudents()
{
//Fetch and return students list
}
El código de cliente:
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);
}
Este código obviamente falla porque la cadena JSON devuelto por el servicio se parece a continuación:
{"FetchStudentsResult":[{"Course":"BE","Department":"IS","EmailID":"[email protected]","ID":1,"Name":"Vinod"}]}
Por algún motivo, la respuesta json se está completando dentro del FetchStudentsResult. Ahora en el modo de depuración si elimino forzosamente este wrapper FetchStudentsResult, mi deserialización funciona perfectamente bien.
He tratado DataContractJsonSerializer pero el resultado es exactamente el mismo. ¿Puede alguien decirme qué me estoy perdiendo?
Gracias Vinod su solución me ayudó; Eres un salvavidas. –