简体   繁体   中英

Reading JSON (Corona SDK)

I want to read or separate a fiels from my json. I can read :

local datos = json.decode(event.response)

print(datos["latitud"])
print(datos["longitud"])
print(datos["direccion"])
print(datos["telefono"])
print(datos["fax"])
print(datos["servicios"])

But "servicios" is a another JSON and I can't obtain his fields, "null" is the response when I do:

for i in pairs(datos) do
            print(datos["servicios"][servicios][i])
end

THE SCREEN EXIT:

{
    "latitud": "39.98008",
    "longitud": "-0.063171",
    "direccion": "Ctra. Nacional 340 Km 64,500 - 12006 Castellón de la Plana",
    "telefono": "964 20 28 38",
    "fax": "964 34 18 54",
    "servicios": [
        {
            "servicio": "Acceso al parking"
        },
        {
            "servicio": "Actividades infantiles"
        },
        {
            "servicio": "Áreas de descanso"
        },
        {
            "servicio": "Ascensores"
        },
        {
            "servicio": "Ascensores adaptados"
        },
        {
            "servicio": "Aseos exclusivos adaptados"
        },
        {
            "servicio": "Autobús"
        },
        {
            "servicio": "Cajeros automáticos"
        },
        {
            "servicio": "Carritos infantiles"
        },
        {
            "servicio": "Escaleras"
        },
        {
            "servicio": "Escaleras mecánicas"
        },
        {
            "servicio": "Parking gratuito"
        },
        {
            "servicio": "Plazas de parking adaptadas con doble ancho"
        },
        {
            "servicio": "Reserva de taxis"
        },
        {
            "servicio": "Restaurantes especializados en organizar eventos para niños"
        },
        {
            "servicio": "Sala de lactancia"
        },
        {
            "servicio": "Servicio atención al cliente"
        },
        {
            "servicio": "Sillas de ruedas"
        },
        {
            "servicio": "Teléfonos públicos"
        }
    ]
}
39.98008    
-0.063171   
Ctra. Nacional 340 Km 64,500 - 12006 Castellón de la Plana  
964 20 28 38    
964 34 18 54    
table: 0x115806ed0

I WANT TO APPEAR THE FIELDS AND NOT "table: 0X115...."

THANKS!!!

for _, v in ipairs(datos.servicios) do
   print(v.servicio)
end

Your logic of iterating datos is wrong. In your code, your i is varying for indexes of datos table but you are trying to reference them to datos["servicios"][servicios] which leads to nil . The correct looping would be:

for i in pairs( datos["servicios"] ) do
    print( datos["servicios"][i] )
end

or, more simply

for i in pairs( datos.servicios ) do
    print( datos.servicios[i] )
end

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM