1

json からフィールドを読み取ったり、分離したりしたい。私は読むことができます :

local datos = json.decode(event.response)

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

しかし、「servicios」は別の JSON であり、彼のフィールドを取得できません。取得したときの応答は「null」です。

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

画面の終了:

{
    "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

「テーブル:0X115 ....」ではなく、フィールドを表示したい

ありがとう!!!

4

2 に答える 2

1
for _, v in ipairs(datos.servicios) do
   print(v.servicio)
end
于 2013-03-22T13:41:52.853 に答える
1

反復のロジックdatosが間違っています。あなたのコードでは、あなたiはテーブルのインデックスを変えてdatosいますが、それらを参照しようとしていdatos["servicios"][servicios]ますnil。正しいループは次のようになります。

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

または、もっと簡単に

for i in pairs( datos.servicios ) do
    print( datos.servicios[i] )
end
于 2013-03-22T15:11:50.887 に答える