Quiero retomar algunos datos JSON desde mi WebAPI controlador y quiero que los datos que se devuelven a ser como este.

{"rows":[{"id":1,"cell":["1","amila","amila","False"]},{"id":2,"cell":["2","rakhitha","rakhitha","False"]},{"id":3,"cell":["3","Chathura","Chathura","False"]},{"id":4,"cell":["4","Geethaga","Geethaga","False"]}]}

Pero cuando uso el siguiente código,

return new System.Web.Mvc.JsonResult()
        {
            Data = jsonData,
            JsonRequestBehavior = System.Web.Mvc.JsonRequestBehavior.AllowGet
        };

los datos se devuelven como este.

{"Data":{"rows":[{"id":1,"cell":["1","amila","amila","False"]},{"id":2,"cell":["2","rakhitha","rakhitha","False"]},{"id":3,"cell":["3","Chathura","Chathura","False"]},{"id":4,"cell":["4","Geethaga","Geethaga","False"]}]},"JsonRequestBehavior":0}

Hay un adicional de JSON clave como «Datos». Yo no quiero que ese parámetro y como mi aplicación me puedo quitar esta «Datos» de la parte después de llegar a el lado del cliente. Debido a que los datos recibidos desde el servidor se utiliza directamente para llenar un jqGrid. El código a continuación.

$("#Grid1").jqGrid({
            url: 'api/matchingservicewebapi/GetUser',
            datatype: 'json',
            mtype: 'GET',
            colNames: ['', 'Name', 'FullName', 'IsActive'],
            colModel: [
                { name: 'Id', index: 'Id', width: 200 },
                { name: 'Name', index: 'Name', width: 300 },
                { name: 'FullName', index: 'FullName', width: 300 },
                { name: 'IsActive', index: 'IsActive', width: 300 }
            ],
            rowNum: 10,
            rowList: [10, 20, 30],
            pager: '#pager',
            sortname: 'Id',
            viewrecoreds: true,
            sortorder: "desc",
            imgpath: 'Themes/images'
    }).navGrid(pager, { edit: true, add: true, del: true, refresh: true, search: true });

¿Cómo puedo eliminar este «Datos» parte? Porque cuando usted tiene este «Datos» clave en el devuelve el JSON, jqGrid no es capaz de llenar los datos en el grid.

Estoy usando WebAPI Controlador para devolver los datos. Pero he intentado utilizar MVC3 controlador, entonces este «Datos» la clave no estaba en el devuelve el JSON y datos de lleno a la red con éxito. Pero quiero usar WebAPI Controlador. Por favor, ayudar a resolver esto.

Gracias de antemano.

5 Comentarios

  1. 13

    JsonResult es un concepto de MVC. Para la API de Web, su controlador puede simplemente devolver un objeto CLR y se serializa en JSON (suponiendo que el cliente pide JSON).

    El resultado que estamos viendo es porque todo el JsonResult objeto es obtener serializado en JSON.

    Para empezar con Web API, consulte: http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api

    (O puede continuar para utilizar un controlador MVC … hay una razón en particular que usted desea usar una API Web de la controladora?)

    • Muchas gracias por la explicación
  2. 4

    Json.NET funciona bien para mí. Acabo de volver de las JObject en la Web de la API de

    http://james.newtonking.com/projects/json/help/html/CreatingLINQtoJSON.htm

    JObject o = JObject.FromObject(new
    {
      channel = new
     {
       title = "James Newton-King",
       link = "http://james.newtonking.com",
       description = "James Newton-King's blog.",
       item =
           from p in posts
           orderby p.Title
           select new
           {
             title = p.Title,
             description = p.Description,
             link = p.Link,
             category = p.Categories
        }

    }
    })

  3. 1

    Uso data.d en lugar de los datos en el código.

     success: function(data){
                   //create jquery object from the response html
                   var response=$(data.d);
                   //Your binding logic here
              }
  4. 1

    Usted puede devolver los datos en jqgrid formato requerido. Si usted no desea crear una clase separada para esto, el uso de dinámicas de tipo de retorno en apicontroller. Ver ejemplo de trabajo aquí.

Dejar respuesta

Please enter your comment!
Please enter your name here