Ayuda para leer Json y XML para Apps Spotbros

37 views
Skip to first unread message

Benjamin Rodriguez

unread,
Apr 18, 2013, 5:02:02 AM4/18/13
to sbpo...@googlegroups.com
Hola.
Después de realizar varias apps para Spotbros, he visto que muchos datos hay que tomarlos por json o xml.
Yo estoy acostumbrado a usar bases de datos y json y xml se me traban un poco.
Por ejemplo la app CALLE (OR8P4UM), tiene que tomar un json, que no soy capaz de acceder por elementos y actualmente tengo tomada la información convirtiendo a string y usando funciones de texto, pero me gustaría sabre como acceder a los elementos directamente por el array.
Os pongo parte del json devuelto:

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "Paseo del Prado",
               "short_name" : "Paseo del Prado",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Madrid",
               "short_name" : "Madrid",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Madrid",
               "short_name" : "M",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "Comunidad de Madrid",
               "short_name" : "Comunidad de Madrid",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "España",
               "short_name" : "ES",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "28014",
               "short_name" : "28014",
               "types" : [ "postal_code" ]
            }
         ],
         "formatted_address" : "Paseo del Prado, 28014 Madrid, España",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 40.41153370,
                  "lng" : -3.69255780
               },
               "southwest" : {
                  "lat" : 40.41091040,
                  "lng" : -3.69268670
               }
            },
            "location" : {
               "lat" : 40.41122210,
               "lng" : -3.69262220
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 40.41257103029150,
                  "lng" : -3.691273269708498
               },
               "southwest" : {
                  "lat" : 40.40987306970850,
                  "lng" : -3.693971230291502
               }
            }
         },
         "types" : [ "route" ]
      },
......

Como se puede acceder a las diferentes partes directamente ?
Algún ejemplillo ?

Gracias.

Jesus Hernandez

unread,
Apr 18, 2013, 5:17:31 AM4/18/13
to sbpo...@googlegroups.com
On 04/18/2013 11:02 AM, Benjamin Rodriguez wrote:
> Hola.
> Despu�s de realizar varias apps para Spotbros, he visto que muchos
> datos hay que tomarlos por json o xml.
> Yo estoy acostumbrado a usar bases de datos y json y xml se me traban
> un poco.
> Por ejemplo la app CALLE (OR8P4UM), tiene que tomar un json, que no
> soy capaz de acceder por elementos y actualmente tengo tomada la
> informaci�n convirtiendo a string y usando funciones de texto, pero me
> gustar�a sabre como acceder a los elementos directamente por el array.
> Os pongo parte del json devuelto:
>
> {
> "results" : [
> {
> "address_components" : [
> {
> "long_name" : "Paseo del Prado",
> "short_name" : "Paseo del Prado",
> "types" : [ "route" ]
> },
> {
> "long_name" : "Madrid",
> "short_name" : "Madrid",
> "types" : [ "locality", "political" ]
> },
> {
> "long_name" : "Madrid",
> "short_name" : "M",
> "types" : [ "administrative_area_level_2", "political" ]
> },
> {
> "long_name" : "Comunidad de Madrid",
> "short_name" : "Comunidad de Madrid",
> "types" : [ "administrative_area_level_1", "political" ]
> },
> {
> "long_name" : "Espa�a",
> "short_name" : "ES",
> "types" : [ "country", "political" ]
> },
> {
> "long_name" : "28014",
> "short_name" : "28014",
> "types" : [ "postal_code" ]
> }
> ],
> "formatted_address" : "Paseo del Prado, 28014 Madrid, Espa�a",
> Alg�n ejemplillo ?
> Gracias.
> --
> Has recibido este mensaje porque est�s suscrito al grupo "sbportal" de
> Grupos de Google.
> Para anular la suscripci�n a este grupo y dejar de recibir sus correos
> electr�nicos, env�a un correo electr�nico a
> sbportal+u...@googlegroups.com.
> Para obtener m�s opciones, visita
> https://groups.google.com/groups/opt_out.
>
>
Hola!

Lo m�s sencillo en este caso es utilizar la funci�n "json_decode" de
esta forma: json_decode([JSON_STRING],true). Pas�ndole el segundo
argumento a "true" para que te devuelva un array asociativo. De esta
forma, en tu caso:

$results = json_decode($json_string,true);

// itera sobre los "address_components
$address_components = $results["address_components"];
foreach($address_components as $component)
{
// haz algo
print $component["long_name"]."\n";
}

Espero que te sirva.

Saludos

Benjamin

unread,
Apr 18, 2013, 5:25:15 AM4/18/13
to sbpo...@googlegroups.com
Ya he intentado con json_decode, pero no me iba
Probare a ver si va con el ejemplo que me comentas.
Aunque mas que recorrer el array me interesaba acceder directo a las partes del mismo.
algo como array["result"]["address_components"][.....  (no se si se puede hacer así, al menos a mi no me han funcionado las pruebas que he realizado)
Gracias.



El 18 de abril de 2013 11:17, Jesus Hernandez <jesus.h...@spotbros.com> escribió:
On 04/18/2013 11:02 AM, Benjamin Rodriguez wrote:
Hola.
Después de realizar varias apps para Spotbros, he visto que muchos datos hay que tomarlos por json o xml.

Yo estoy acostumbrado a usar bases de datos y json y xml se me traban un poco.
Por ejemplo la app CALLE (OR8P4UM), tiene que tomar un json, que no soy capaz de acceder por elementos y actualmente tengo tomada la información convirtiendo a string y usando funciones de texto, pero me gustaría sabre como acceder a los elementos directamente por el array.

Os pongo parte del json devuelto:

{
    "results" : [
       {
          "address_components" : [
             {
                "long_name" : "Paseo del Prado",
                "short_name" : "Paseo del Prado",
                "types" : [ "route" ]
             },
             {
                "long_name" : "Madrid",
                "short_name" : "Madrid",
                "types" : [ "locality", "political" ]
             },
             {
                "long_name" : "Madrid",
                "short_name" : "M",
                "types" : [ "administrative_area_level_2", "political" ]
             },
             {
                "long_name" : "Comunidad de Madrid",
                "short_name" : "Comunidad de Madrid",
                "types" : [ "administrative_area_level_1", "political" ]
             },
             {
                "long_name" : "España",

                "short_name" : "ES",
                "types" : [ "country", "political" ]
             },
             {
                "long_name" : "28014",
                "short_name" : "28014",
                "types" : [ "postal_code" ]
             }
          ],
          "formatted_address" : "Paseo del Prado, 28014 Madrid, España",
Algún ejemplillo ?
Gracias.
--
Has recibido este mensaje porque estás suscrito al grupo "sbportal" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a sbportal+unsubscribe@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.


Hola!

Lo más sencillo en este caso es utilizar la función "json_decode" de esta forma: json_decode([JSON_STRING],true). Pasándole el segundo argumento a "true" para que te devuelva un array asociativo. De esta forma, en tu caso:


$results = json_decode($json_string,true);

// itera sobre los "address_components
$address_components = $results["address_components"];
foreach($address_components as $component)
{
// haz algo
print $component["long_name"]."\n";
}

Espero que te sirva.

Saludos


--
Has recibido este mensaje porque estás suscrito al grupo "sbportal" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a sbportal+unsubscribe@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.





--
--------------------------------------------------------------------------------

Antes de imprimir este e-mail piense bien si es necesario hacerlo

NOTA: Los acentos han sido omitidos en su mayor parte para evitar errores en el envio.

Este mensaje y los documentos que, en su caso, lleve anexos, pueden contener informacion confidencial. Por ello, se informa a quien lo reciba por error, que la informacion contenida en el mismo es reservada y su no autorizado esta prohibido legalmente por la Ley Organica 15/1999 de Proteccion de Datos de Caracter Personal, por lo que en tal caso, debe abstenerse de realizar copia, remitirlo o entregarlo a otra persona y proceda a borrarlo de inmediato.
Si el receptor de la comunicacion no fuera el destinatario le informamos que cualquier divulgacion, copia, reproduccion ,distribucion o utilizacion no autorizada de la informacion contenida en la misma esta prohibida por la legislacion vigente y podra desencadenar acciones legales.
Reply all
Reply to author
Forward
0 new messages