2013-03-22 4 views
1

내 json을 읽거나 분리하고 싶습니다. 내가 읽을 수 있습니다JSON (Corona SDK) 읽기

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

화면 EXIT를 :

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)는"내가 할 때 반응이다

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

내가 필드와 NOT 표시 할 "테이블 : 된 MCADR을 ...."

감사합니다!

답변

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

반복 논리이 잘못되었습니다. 귀하의 코드에서 idatos 테이블의 인덱스가 다르지만 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