2017-09-28 4 views
0

J'essaie d'extraire les informations d'une réponse de l'API en utilisant groovyAyant des difficultés à accéder à l'aide des champs de JSON groovy

Je veux à l'information stockée sous la clé « res ».

Quelque chose le long des lignes de body.measures.02: 00: 00: 02: 06: 70.res

ne peuvent pas comprendre avoir accès à ces informations sans jeter un NullPointerException.

"body":[ { 
    "_id":"70:ee:50:01:fe:96", 
    "place":{ 
     "location":[ 
      -70.863189, 
      42.273936 
     ], 
     "altitude":26.154942, 
     "timezone":"America\/New_York" 
    }, 
    "mark":12, 
    "measures":{ 
     "02:00:00:02:06:70":{ 
      "res":{ 
       "1506611038":[ 
       22, 
       66 
       ] 
      }, 
      "type":[ 
       "temperature", 
       "humidity" 
      ] 
     }, 
     "06:00:00:01:97:28":{ 
      "wind_strength":15, 
      "wind_angle":343, 
      "gust_strength":29, 
      "gust_angle":301, 
      "wind_timeutc":1506611083 
     }, 
     "70:ee:50:01:fe:96":{ 
      "res":{ 
       "1506611086":[ 
       1007.4 
       ] 
      }, 
      "type":[ 
       "pressure" 
      ] 
     } 
    }, 
    "modules":[ 
     "02:00:00:02:06:70", 
     "06:00:00:01:97:28" 
    ], 
    "module_types":{ 
     "02:00:00:02:06:70":"NAModule1", 
     "06:00:00:01:97:28":"NAModule2" 
    } 
    } 






], 
"status":"ok", 
"time_exec":0.017483949661255, 
"time_server":1506611446 
} 
+0

Qu'avez-vous essayé jusqu'à présent? –

Répondre

0

body est un tableau avec un élément dans votre cas, vous devez donc faire body[0].measures.'02:00:00:02:06:70'.res, e. g. comme

new groovy.json.JsonSlurper().parseText('''{"body":[ { 
    "_id":"70:ee:50:01:fe:96", 
    "place":{ 
     "location":[ 
      -70.863189, 
      42.273936 
     ], 
     "altitude":26.154942, 
     "timezone":"America/New_York" 
    }, 
    "mark":12, 
    "measures":{ 
     "02:00:00:02:06:70":{ 
      "res":{ 
       "1506611038":[ 
       22, 
       66 
       ] 
      }, 
      "type":[ 
       "temperature", 
       "humidity" 
      ] 
     }, 
     "06:00:00:01:97:28":{ 
      "wind_strength":15, 
      "wind_angle":343, 
      "gust_strength":29, 
      "gust_angle":301, 
      "wind_timeutc":1506611083 
     }, 
     "70:ee:50:01:fe:96":{ 
      "res":{ 
       "1506611086":[ 
       1007.4 
       ] 
      }, 
      "type":[ 
       "pressure" 
      ] 
     } 
    }, 
    "modules":[ 
     "02:00:00:02:06:70", 
     "06:00:00:01:97:28" 
    ], 
    "module_types":{ 
     "02:00:00:02:06:70":"NAModule1", 
     "06:00:00:01:97:28":"NAModule2" 
    } 
    } 






], 
"status":"ok", 
"time_exec":0.017483949661255, 
"time_server":1506611446 
}}''').body[0].measures.'02:00:00:02:06:70'.res 
+0

J'ai essayé cela et pas de chance. Toujours obtenir une erreur nulle au champ 'res' – Maz

+0

Ensuite, vous devez poster votre code complet. Je vous ai posté le mien qui fonctionne bien. – Vampire