Go Down

Topic: décodage json lunopia (Read 197 times) previous topic - next topic

steph96

bonjour,

j'ai besoin d'aide pour le décodage d'un json du site lunopia
je récupère bien la chaine json du site
mais je n'arrive pas a trouver les [][] a mettre derrière root pour avoir par exemple l'illumination ou la phase de la lune ...
voilà le json du site :

http://www.lunopia.com/call?what=ephem&timeZone=Europe%2FParis&when=current&key=YWxsOzAuNTk0OTg3MDAgMTU2NjMxNTI3MjtTV2RzYTJAZDsyNDU4NzE2LjE0ODk5

et mon code :

Code: [Select]


  endpoint =  "http://www.lunopia.com/call?what=ephem&timeZone=Europe%2FParis&when=current&key=";
  key =       "************";

  if (TraceON) { Serial.println("Lecture Lune..."); Serial.println(endpoint + key); }


 
 



  HTTPClient http;
  http.begin(endpoint + key);
  int httpCode = http.GET();
  if (TraceON) { Serial.println(httpCode); }
  if (httpCode > 0) { //Check for the returning code
 
  json = http.getString();
  if (TraceON) { Serial.println(httpCode); Serial.println(json); }
} else {
      if (TraceON) { Serial.println("Erreur requète HTTP"); }


}
  http.end();





////////////////////
//  Décodage du JSON
////////////////////


StaticJsonBuffer<2000> jsonBuffer;

JsonObject& root = jsonBuffer.parseObject(json);


const char* illumination = root["0"]["ILLUMINATION"];

Serial.println(illumination);




qui pourrait m'indiquer comment avoir mes infos json car le ["0"]["ILLUMINATION"] ne donne rien
et le
  • ["ILLUMINATION"] me provoque une erreur de compilation


Merci d'avance
Stéphane

fdufnews

Un bon outil pour comprendre la structure d'un fichier JSON http://chris.photobooks.com/json/
Tu colles ton JSON dans la fenêtre INPUT et tu cliques sur RENDER

Mais si tu veux de l'aide ce serait bien de donner le message d'erreur que tu reçois à la compilation.

steph96

Merci pour le site, super bien fait,
j'avais trouvé aussi JAYSON comme app. sur iphone qui est bien réalisée

le message d'erreur est :
Code: [Select]

In file included from /home/stephane/Arduino/libraries/ArduinoJson/src/ArduinoJson.hpp:11:0,
                 from /home/stephane/Arduino/libraries/ArduinoJson/src/ArduinoJson.h:9,
                 from /home/stephane/Dropbox/ARDUINO/test-lecture-lune-esp32/test-lecture-lune-esp32.ino:30:
/home/stephane/Arduino/libraries/ArduinoJson/src/ArduinoJson/JsonObject.hpp: In instantiation of 'ArduinoJson::Internals::List<ArduinoJson::JsonPair>::iterator ArduinoJson::JsonObject::findKey(TStringRef) [with TStringRef = const int&; ArduinoJson::Internals::List<ArduinoJson::JsonPair>::iterator = ArduinoJson::Internals::ListIterator<ArduinoJson::JsonPair>]':
/home/stephane/Arduino/libraries/ArduinoJson/src/ArduinoJson/JsonObject.hpp:276:66:   required from 'ArduinoJson::Internals::List<ArduinoJson::JsonPair>::const_iterator ArduinoJson::JsonObject::findKey(TStringRef) const [with TStringRef = const int&; ArduinoJson::Internals::List<ArduinoJson::JsonPair>::const_iterator = ArduinoJson::Internals::ListConstIterator<ArduinoJson::JsonPair>]'
/home/stephane/Arduino/libraries/ArduinoJson/src/ArduinoJson/JsonObject.hpp:282:44:   required from 'typename ArduinoJson::Internals::JsonVariantAs<TValue>::type ArduinoJson::JsonObject::get_impl(TStringRef) const [with TStringRef = const int&; TValue = ArduinoJson::JsonObject; typename ArduinoJson::Internals::JsonVariantAs<TValue>::type = ArduinoJson::JsonObject&]'
/home/stephane/Arduino/libraries/ArduinoJson/src/ArduinoJson/JsonObject.hpp:157:44:   required from 'typename ArduinoJson::Internals::JsonVariantAs<T>::type ArduinoJson::JsonObject::get(const TString&) const [with TValue = ArduinoJson::JsonObject; TString = int; typename ArduinoJson::Internals::JsonVariantAs<T>::type = ArduinoJson::JsonObject&]'
/home/stephane/Arduino/libraries/ArduinoJson/src/ArduinoJson/JsonObjectSubscript.hpp:59:36:   required from 'typename ArduinoJson::Internals::JsonVariantAs<T>::type ArduinoJson::Internals::JsonObjectSubscript<TKey>::as() const [with TValue = ArduinoJson::JsonObject; TStringRef = const int&; typename ArduinoJson::Internals::JsonVariantAs<T>::type = ArduinoJson::JsonObject&]'
/home/stephane/Arduino/libraries/ArduinoJson/src/ArduinoJson/Deserialization/../JsonVariantSubscripts.hpp:67:45:   required from 'typename ArduinoJson::Internals::EnableIf<ArduinoJson::Internals::StringTraits<const TString*>::has_equals, ArduinoJson::Internals::JsonObjectSubscript<const TString*> >::type ArduinoJson::Internals::JsonVariantSubscripts<TImpl>::operator[](const TString*) [with TString = char; TImpl = ArduinoJson::Internals::JsonObjectSubscript<const int&>; typename ArduinoJson::Internals::EnableIf<ArduinoJson::Internals::StringTraits<const TString*>::has_equals, ArduinoJson::Internals::JsonObjectSubscript<const TString*> >::type = ArduinoJson::Internals::JsonObjectSubscript<const char*>]'
/home/stephane/Dropbox/ARDUINO/test-lecture-lune-esp32/test-lecture-lune-esp32.ino:142:50:   required from here
/home/stephane/Arduino/libraries/ArduinoJson/src/ArduinoJson/JsonObject.hpp:270:54: error: 'equals' is not a member of 'ArduinoJson::Internals::StringTraits<const int&, void>'
       if (Internals::StringTraits<TStringRef>::equals(key, it->key)) break;


quand je met :
Code: [Select]

const char* illumination = root[0]["ILLUMINATION"];


mais il semble que ce soit normal en regardant les docs sur le json V5

et si je met :
const char* illumination = root["0"]["ILLUMINATION"];[/code]

je n'ai plus d'erreur de compilation mais ma chaîne est vide...


J-M-L

Partez avec la version 6 et en modifiant un des exemples
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

lesept

Un autre site adapté à arduino, l'assistant arduino json. Il faut aussi copier l'ensemble du json dans la fenêtre et se laisser guider
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

steph96

#5
Aug 22, 2019, 08:50 pm Last Edit: Aug 22, 2019, 08:52 pm by steph96
Trop bien ce site d'assistant json
j'ai résolu mon problème en 2 secondes !

MERCI MERCI MERCI

8)

lesept

A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

Go Up