J’espère que ce sujet a bien ça place dans ce forum?
Je voudrais pourvoir exploiter quelques données JSON que je récupère depuis une url.
Je débute dans ce domaine.
Voici le code :
<html>
<body>
<H2>Test extraction valeur JSON</H2>
<p>Voici les valeurs :</p>
<div id="test"></div>
<script>
var request = new XMLHttpRequest();
request.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var response = JSON.parse(this.responseText);
document.getElementById("test").innerHTML = this.response;
}
};
request.open("GET", "http://192.168.1.41/json?&view=sensorupdate");
request.send();
</script>
<p>Lien vers le JSON <a href="http://192.168.1.41/json?&view=sensorupdate" target="_blank">Sensor</a></p>
</body>
</html>
J’arrive donc a extraire le JSON mais je n’arrive pas a extraire seulement quelques données comme : « Name »: « Déclenchement » et « Value »: 0 (sachant que Value peut changer d’état 0 ou 1).
Si quelqu’un peu m’aidé, je suis preneur.
Merci d’avance
Tu peux récupérer les valeurs ds un tableau en php avec json_decode ou en javascript avec JSON.parse.
le principe étant de « découper » ( parser en jargon) la chaîne de caractères json en un tableau ou un objet.
dans ton code « response » doit être un objet contenant les valeurs lié a chaque libellé accessible par un truc du genre:
pour la valeur de « déclenchement »
response.Sensors[2].Taskvalues.Value
ou
response.Sensors[2].Taskvalues[0].Value
et
response.Sensors[2].Taskvalues.Name ou
response.Sensors[2].Taskvalues[0].Name
Je ne vois pas comment faire dans mon code pour que l’objet « response » contienne les valeurs response.Sensors[2].Taskvalues[0].Value
et response.Sensors[2].Taskvalues[0].Name ?
Si je me suis pas gourrer, la ligne var response = JSON.parse(this.responseText); fais ce job et ton objet response contient déja les valeurs « parsée »
le premier truc c’est de s’assurer que response.Sensors[2].Taskvalues[0].Value et l’autre contiennent bien les valeurs attendues.
Pour ça tu peux les afficher dans un alert(response.Sensors[2].Taskvalues[0].Value); juste avant la balise </script>
Si l’alert afiche tes valeurs tu pourras faire un div dans lequel tu mettras ces valeurs.
Si tu regardes le code que tu fournis dans ton post, l’affichage du json se fait par le javascript document.getElementById("test").innerHTML = this.response; dans le div : <div id="test"></div>
sur ce modèle tu peux créer une div <div id="Declenchement"></div> et rajouter après
NB Declenchement sans accent il me semble que javascript n’aime pas les accents…
tu peux formater la réponse en faisant :
document.getElementById("Declenchement").innerHTML = "la valeur pour " + response.Sensors[2].Taskvalues[0].Name + " est " + response.Sensors[2].Taskvalues[0].Value);
magic
après bien sur tu peux t’en servir pour conditionner (if…) tes autres affichages. a noter que pour clarifier le code tu peux créer des variables pour y mettre tes valeur:
var mydeclenchement = response.Sensors[2].Taskvalues[0].Name;
var mydeclenchement_value = response.Sensors[2].Taskvalues[0].Value;