none
¿Como puedo leer, parsear o recorrer un json array en un web service creado en c#? RRS feed

  • Pregunta

  • De ante mano, muchas gracias a quien me pueda ayudar con esta duda, ya llevo 20 dias peliando con este problema y en internet no encuentro una solucion clara para resolverlo.

    Tengo un web service Rest creado en una aplicación mvc 3 vacía, en ella tengo un controlador donde recibo un json generado desde una aplicación android, para luego parsear el json y agregar los datos a un objeto y luego guardarlos en sql server por medio de un Store Procedure.

    [HttpPost]
            public JsonResult PostDato(Objeto O)
            {
                switch (Request.HttpMethod)
                {
                    case "POST":
                        return Json(clienteManager.InsertarCliente(O));
                }
                return Json(new { Error = true, Message = "Operación HTTP desconocida" }, JsonRequestBehavior.AllowGet);
            }

    El problema empieza cuando no quiero enviar un solo cliente al web service, si no varios clientes, asi que mando la info de cada cliente en distintos json, por lo que armo un json array, pero no se como leer ese json array en mi web service para que este pueda darme los json objet que tiene.

    Muchas gracias por responder.

    miércoles, 19 de marzo de 2014 17:01

Todas las respuestas

  • hola

    partamos de la base que en el codigo que muestras no veo ningun json array, donde esta ese array que quieres trabajar

    el json quieres trabjarlo desde .net o es en javascript (en el codigo del cliente) ?

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    miércoles, 19 de marzo de 2014 19:07
  • El json array lo hago desde mi aplicacion android, en ella cargo los datos desde sqlite en el que una fila de informacion es un json, para luego agregarlo al json array y lo envio por rest al web service, tiene esta estructura.

    [{"Longitud_DetRev":"-74.7990109","Linea_DetRev":1,"Hoja_DetRev":44,"CodigoMorfologia_DetRev":1012,"CodigoPlaga_DetRev":26,"Palma_DetRev":25,"Latitud_DetRev":"10.036401","FotoPalma_DetRev":"[B@405f7390","TipoRev_DetRev":"1001","Observaciones_DetRev":"Prueba ws 1","Codigo_Lote":"A03","Cantidad_DetRev":7,"Codigo_Empleado":"000","FecRev_DetRev":"2014129 17:45:24"},{"Longitud_DetRev":"-74.7990109","Linea_DetRev":1,"Hoja_DetRev":44,"CodigoMorfologia_DetRev":1012,"CodigoPlaga_DetRev":26,"Palma_DetRev":25,"Latitud_DetRev":"10.036401","FotoPalma_DetRev":"[B@405f7390","TipoRev_DetRev":"1001","Observaciones_DetRev":"Prueba ws 1","Codigo_Lote":"A03","Cantidad_DetRev":7,"Codigo_Empleado":"000","FecRev_DetRev":"2014129 17:45:24"},{"Longitud_DetRev":"-74.7990109","Linea_DetRev":1,"Hoja_DetRev":44,"CodigoMorfologia_DetRev":1012,"CodigoPlaga_DetRev":26,"Palma_DetRev":25,"Latitud_DetRev":"10.036401","FotoPalma_DetRev":"[B@405f7390","TipoRev_DetRev":"1001","Observaciones_DetRev":"Prueba ws 1","Codigo_Lote":"A03","Cantidad_DetRev":7,"Codigo_Empleado":"000","FecRev_DetRev":"2014129 17:45:24"}]

    miércoles, 19 de marzo de 2014 19:16
  • hola

    o sea la idea es procesar ese array en .net dentro del servicio ?

    como recibe el servicio rest el valor, lo hace como string? o defines una clase que sea del tipo List<>

    ---

    si lo recibes como string podrias usar

    http://json.codeplex.com/

    para parsear el json y convertirlo a una lista tipada

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    miércoles, 19 de marzo de 2014 19:52
  • Hola,

    Muy sencillo!

    Utiliza lo que todo el mundo en .NET usa para trabajar con JSON: Json.NET

    http://james.newtonking.com/json

    Sólo tienes que crear una clase con la estructura deseada:

    public class TuTipo
    { 
        public decimal Longitud_DetRev {get ; set ; }
        ...
    }

    Y luego deserializarlo:

    string json = "JsonDataString";
    var m = JsonConvert.DeserializeObject<List<TuTipo>>(json);
    
    

    Observa que el truco es deserializarlo como List<TuTipo> :)

    Saludos,


    No olvides marcar la respuesta como correcta si te ha sido de utilidad :-) Follow me on Twiiter: @lluisfranco Blog: lluisfranco.com


    jueves, 20 de marzo de 2014 7:50
    Moderador
  • Ya el objeto lo tengo creado, mi intencion es que este fragmento de codigo:

    case "POST":
                        return Json(clienteManager.InsertarCliente(O));

    pueda recibir el json array y en caso de que se pueda, que modifico para que lo pueda recorrer?

    Como esta ahora recibe perfectamente un json con estructura:

    {"Longitud_DetRev":"-74.7990109","Linea_DetRev":1,"Hoja_DetRev":44,"CodigoMorfologia_DetRev":1012,"CodigoPlaga_DetRev":26,"Palma_DetRev":25,"Latitud_DetRev":"10.036401","FotoPalma_DetRev":"[B@405f7390","TipoRev_DetRev":"1001","Observaciones_DetRev":"Prueba ws 1","Codigo_Lote":"A03","Cantidad_DetRev":7,"Codigo_Empleado":"000","FecRev_DetRev":"2014129 17:45:24"}

    pero quieron enviar todos los json de una sola vez y no hacerlo uno por uno, ya que se puede presentar el caso de que sean cientos o hasta miles de json...

    jueves, 20 de marzo de 2014 15:01