Extraire des données JSON depuis une URL et exploiter quelques données

Bonjour,

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>

Ce qui me donne ceci :

et qui est extrait de cette page :

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

hello,

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

pour « déclenchement »

source:
https://www.w3schools.com/js/js_json.asp

Merci pour ta réponse.

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 ?

et que les 2 valeurs s’affichent sur ma page.

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

document.getElementById("test").innerHTML = this.response;

la ligne :

document.getElementById("Declenchement").innerHTML = response.Sensors[2].Taskvalues[0].Name;

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 :wink:

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;

source:
https://www.w3schools.com/jsref/prop_html_innerhtml.asp

Ça ne marche toujours pas de mon coté.
J’ai créer une « alert » pour voir si cela fonctionnait mais toujours rien (j’ai essayé différente syntaxe).

Merci pour ton aide !

@bof , en fait j’ai réussi en utilisant les 2 dernières variables que tu as mise de cette façon :

    var mydeclenchement = response.Sensors[2].TaskValues[0].Name;
    var mydeclenchement_value = response.Sensors[2].TaskValues[0].Value;
 document.getElementById("resultat").textContent =  mydeclenchement + " = " + mydeclenchement_value ; 


Merci beaucoup pour ton aide.