Json

Définition

JSON (JavaScript Object Notation – Notation Objet issue de JavaScript) est un format léger d'échange de données. Il est facile à lire ou à écrire pour des humains. Il est aisément analysable ou générable par des machines. Il est basé sur un sous-ensemble du langage de programmation JavaScript (JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999).

 

JSON est un format texte complètement indépendant de tout langage, mais les conventions qu'il utilise seront familières à tout programmeur habitué aux langages descendant du C, comme par exemple : C lui-même, C++, C#, Java, JavaScript, Perl, Python et bien d'autres.

 

Ces propriétés font de JSON un langage d'échange de données idéal.

JSON se base sur deux structures:

  • Une collection de couples nom/valeur. Divers langages la réifient par un objet, un enregistrement, une structure, un dictionnaire, une table de hachage, une liste typée ou un tableau associatif.
  • Une liste de valeurs ordonnées. La plupart des langages la réifient par un tableau, un vecteur, une liste ou une suite.

Ces structures de données sont universelles. Pratiquement tous les langages de programmation modernes les proposent sous une forme ou une autre. Il est raisonnable qu'un format de données interchangeable avec des langages de programmation se base aussi sur ces structures.

En JSON, elles prennent les formes suivantes:

Un objet, qui est un ensemble de couples nom/valeur non ordonnés. Un objet commence par { (accolade gauche) et se termine par } (accolade droite). Chaque nom est suivi de : (deux-points) et les couples nom/valeur sont séparés par , (virgule).

 

Un tableau est une collection de valeurs ordonnées. Un tableau commence par [ (crochet gauche) et se termine par ] (crochet droit). Les valeurs sont séparées par , (virgule).

 

Une valeur peut être soit une chaîne de caractères entre guillemets, soit un nombre, soit true ou false ou null, soit un objet soit un tableau. Ces structures peuvent être imbriquées.

 

 

 

 

 

Vocabulaire :

Deserialization tutorial
Contains a detailed guide on how to parse a JSON document using the library.
Serialization tutorial
Contains a detailed guide on how to generate a JSON document using the library.

 

 

Références :

https://arduinojson.org/


Json pour arduino et ESP32

Source : https://techtutorialsx.com/2017/04/26/esp32-parsing-json/

Installation :

 

You can install the library via Arduino IDE library manager, being this the easiest way to do it. Just search for ArduinoJson on the search bar, as shown in figure 1, and you should get the option to install it. At the time of writing, the latest version is 5.9.0,

 

 


Tutoriels

Premiers pas :

Envoyer une requête vers le serial

Exemple 2 : Parser une trame en entrée (Désérialisation)

Json est beaucoup utilisé pour récupérer des informations de certains sites de météo ou de messagerie. Ces sites proposent des API ( j'aurais dit Webservice) avec des interfaces standardisés.

Ci dessous un exemple :

Source : https://randomnerdtutorials.com/decoding-and-encoding-json-with-arduino-or-esp8266/

Ce code n'est pas fonctionnel, mais il donne une bonne idée de la manière d'interroger un serveur et de récupérer la réponse.

 

Télécharger
Recupération de la meteo par Json
Api google.pdf
Document Adobe Acrobat 46.2 KB

Construire et envoyer une trame Json (Sérialisation)

 

 

 



Json coté Serveur Web

Source : http://nawrasg.fr/html/arduino/json.php

 

Données sources :

[
    {
        "nom":"salon",
        "t":22,
        "h":69
    },
    {
        "nom":"cuisine",
        "t":26,
        "h":65
    }
]

 

Lire la sortie

 

Nous allons maintenant lire les données en 3 langages de programmation.

 

JavaScript (jQuery)

 

?
$.getJSON("url_arduino", function(resultat){
    $.each(resultat, function(index, piece){
        piece.nom + " : " + piece.t + " - " + piece.h;
    });
});

 

Java

 

?
try{
    JSONArray nArr = new JSONArray(resultat);
    for(int i = 0; i < nArr.length(); i++){
        JSONObject nPiece = nArr.getJSONObject(i);
        String nName = nPiece.getString("nom");
        int nTemp = nPiece.getInt("t");
        int nHum = nPiece.getInt("h");
    }
}catch(Exception e){
    //Gérer les erreurs
}

 

PHP

 

?php
 
$arr = json_decode(resultat);
for($i = 0; $i < count($arr); $i++){
    $nom = $arr[$i]->{'nom'};
    $temp = $arr[$i]->{'t'};
    $hum = $arr[$i]->{'h'};
}

 



Exemple Trame HTTP

J'ai un lien http://xxx.xxx.xxx.xxx/api/xdevices.json?cmd=10 qui me permet de récuperer des données de ce type

{"product":"Eco-devices","T1_PTEC":"HC..","T1_PAPP":550,"T1_HCHP":19187418,"T1_HCHC":13708424,"T2_PTEC":"----","T2_PAPP":0,"T2_HCHP":0,"T2_HCHC":0,"INDEX_C1":0,"INDEX_C2":5907}

<?php

$data = '{

"name": "Aragorn",

"race": "Human"

}';

$character = json_decode($data);

echo $character->name;

>

 

 

Le modele de donnée pour le Smartpoker :

Ide : Entre 000 et 999 - entier -000 réservé à la smartconsole

cmd :Entre 000 et 999 - entier

dat : 16*4=64 caracteres - Texte

 

--> ARAGORN