JSON (Javascript Object Notation)

Documents pareils
Jeux de caracte res et encodage (par Michel Michaud 2014)

Skype (v2.5) Protocol Data Structures (French) Author : Ouanilo MEDEGAN

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.


TP Codage numérique des caractères. Un ordinateur ne manipule que des 0 et des 1 : Comment alors code-t-il du texte?

Le codage informatique

Bases de programmation. Cours 5. Structurer les données

Programmation en Java IUT GEII (MC-II1) 1

Logiciel de Base. I. Représentation des nombres

Rappels Entrées -Sorties

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Une version javascript sera disponible directement dans le cours prochainement.

Le format OpenPGP. Traduit par : Sébastien Person. personseb@yahoo.fr. Matthieu Hautreux. matthieu.hautreux@insa-rouen.fr.

Informatique Générale

Création et Gestion des tables

UE Programmation Impérative Licence 2ème Année

1 Introduction au codage

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

CODAGE DES SMS. 2 Commandes «AT» 25 3 Matériels utilisés 55 4 Interfacer un téléphone GSM 73 5 Réalisations électroniques 101

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès haouaticpge@gmail.com

Codage d information. Codage d information : -Définition-

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Conventions d écriture et outils de mise au point

Module http MMS AllMySMS.com Manuel d intégration

Représentation d un entier en base b

Généralités sur le Langage Java et éléments syntaxiques.

Approche Contract First

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

GPA770 Microélectronique appliquée Exercices série A

CHRONIQUE de la société royale LE VIEUX-LIÈGE

Kiwi-Trip Application de tourisme pour Android

PROJET ALGORITHMIQUE ET PROGRAMMATION II

L'essentiel de XML. Cours XML. Olivier Carton

Chapitre 10 Arithmétique réelle

Veille technologique

Support pour les langues s écrivant de droite à gauche

Système binaire. Algèbre booléenne

Algorithmique et Programmation, IMA

Plan du cours. Historique du langage Nouveautés de Java 7

Outils de traitements de logs Apache

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Documentation SecurBdF

Algorithme. Table des matières

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Chapitre 1 I:\ Soyez courageux!

Noms de domaines internationalisés (IDN)

TP 1 : 1 Calculs en binaire, octal et hexadécimal

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

ALGORITHMIQUE ET PROGRAMMATION En C

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

2 Comment fonctionne un ordinateur, dans les grandes lignes

Programmation C. Apprendre à développer des programmes simples dans le langage C

Formats de fichiers adaptés à l'archivage électronique à moyen et long terme

Affichage de la date d'exigibilité sur les documents FAQ INV 011

4. SERVICES WEB REST 46

HMTL. Exemple de fichier HTML. Structure d un document HTML. Exemple de fichier HTML. Balises HTML. IFT1147 Programmation Serveur Web avec PHP

La mémoire. Un ordinateur. L'octet. Le bit

L3 informatique TP n o 2 : Les applications réseau

API SMS CONSEIL HTTP V2.01. Sommaire. Documentation V1.0 au 21/05/2011

A. À propos des annuaires

Informatique. Les réponses doivent être données en cochant les cases sur la dernière feuille du sujet, intitulée feuille de réponse

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Plan. Programmation Internet Cours 3. Organismes de standardisation

Progitek Extraire Web s version 4.0 (Prix public 19 NET ) DESCRIPTION

Cours 1 : Qu est-ce que la programmation?

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Programmation Orientée Objet Java

Algorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence

Technologies pour Web Services faciles : REST, JSON

Introduction à NetCDF

Paris Airports - Web API Airports Path finding

Avant-propos. Omniprésence d Unicode. À qui s adresse ce livre?

Sélection du contrôleur

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License,

Cyberclasse L'interface web pas à pas

Analyse de sécurité de logiciels système par typage statique

Instructions et spécifications pour la transmission en format XML de déclarations par lots. 30 mai 2015 MODULE 1

Structures algébriques

Langage Java. Classe de première SI

Programmer en JAVA. par Tama

as Architecture des Systèmes d Information

Les chaînes de caractères

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

IFT2880 Organisation des ordinateurs et systèmes

Chapitre 10. Les interfaces Comparable et Comparator 1

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Learning Object Metadata

Contraintes, particularités. 1. Généralités Gestion de la mémoire a. Type des variables et constantes... 2

Optimisations des SGBDR. Étude de cas : MySQL

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Exercices sur SQL server 2000

1/ Présentation de SQL Server :

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

HMI target Visu / PLC HMI. Pour réaliser une interface homme machine avec PLC control

Transcription:

JSON (Javascript Object Notation) 1

JSON (2002) Un format textuel et léger de représentation de données structurée Lisible par l'homme Généré et analysé trivialement par la machine Inspiré largement par le javascript (sousensemble de ECMA-262) tout en restant indépendant du langage : un sous-ensemble minimal & portable de javascript 2

JSON (RFC 4627 en 2006) Beaucoup de langages supportés : objective C, C, C++, java ect... Beaucoup de langues : français, anglais, chinois, japonnais... Il n'existe qu'une seule version de JSON : aucun révision prévue 3

Usage JSON est utilisé En tant que format d'échange entre un client (typiquement un navigateur, possiblement embarqué) et un serveur (backend), Non pas en tant que format de représentation de données Par google, yahoo (services Web) Dans le domaines des smartphones du fait de sa légéreté... 4

JSON Exemple {"menu": { "id": "file", "value": "File", "popup": { "menuitem": [ {"value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"}, {"value": "Close", "onclick": "CloseDoc()"} ]}}} 5

Format 2 types structurés JSON s'organise autours de deux structures (ou types structurés) Object : une collection (non ordonnée) de paires (nom-valeur) Array : un séquence (ordonnée) de valeurs Utilisées par n'importe quel langage moderne, ces 2 types permettent de représenter des structures, des tables (par exemple hash tables) ect... L'imbrication est permise mais aucune structure récursive n'est supportée 6

Format array Une séquence ordonnée de 0 à n valeurs encerclée par [ ] array = [ value *(, value ) ] Est utilisée lorsque les noms (qui sont uniques) sont des entiers séquentiels Exemple : [ 30,40, 50 ] 7

Format - object Une collection non ordonnées de 0 à n paires object = [ member *(, pair ) ] Chaque paire est composée d'un nom et d'une valeur pair = string : value nomdelapaire1 : valeurdelapaire1, nomdelapaire2 : valeurdelapaire2 Est souvent utilisé lorsque les noms sont des strings Exemple : {"size": 50} 8

Format - Exemple d'objects imbriqués {"Image": { "Width": 800, "Height": 600, "Title": "View from 15th", "Thumbnail": { "Url":"http://ex.fr/img/48", "Height": 125, "Width": "100"}, "IDs": [116, 943, 234, 38793]}} 9

Format - Exemple de tableau contenant 2 objets [ { "Latitude": 37.7668, "Longitude": -122.3959, "Address": "", "City": "SAN FRANCISCO", "Country": "US" }, { "Latitude": 37.371991, "Longitude": -122.026020, "City": "SUNNYVALE", "Country": "US"} ] 10

Format types primitifs Aux 2 types structurés (array, object) s'ajoutent 4 types primitifs string number boolean null Séquence de 0 à n caractères unicodes suivant les conventions du langage de programmation C, entouré par Nombre décimale signé true ou false null Une valeur est de type structuré ou primitive 11

Format type primitif string Suite de 0 à n caractères unicodes Utilise la représentation utilisée dans le langage C Les caractère unicodes sont entourés de à l'exception des caractères d'échappement :?, \, et caractères de contrôle (U+0000 à U+001F) 12

Format type string Le type string encodé au format unicode utilise une représentation identique au langage C string = quotation-mark *char quotation-mark char = unescaped / escape ( %x22 / ; " quotation mark U+0022 %x5c / ; \ reverse solidus U+005C %x2f / ; / solidus U+002F %x62 / ; b backspace U+0008 %x66 / ; f form feed U+000C 13

Format type string %x6e / ; n line feed U+000A %x72 / ; r carriage return U+000D %x74 / ; t tab U+0009 %x75 4HEXDIG ) ; uxxxx U+XXXX escape = %x5c ; \ quotation-mark = %x22 ; " unescaped = %x20-21 / %x23-5b / %x5d- 10FFFF 14

Format type primitif number Entier, possiblement signé, contenant ou non une fraction (partie décimale séparée par un point suivi d'au moins un nombre) ou/et un exposant (lettre e en majuscule ou minuscule suivie de l'exposant possiblement négatif) Formes octale ou décimale non permises number = [minus] int [frac] [exp] exp = e/e [ - / + ] 1*DIGIT frac =. 1*DIGIT int = 0 / ( 1-9 *DIGIT ) 15

Générateur & Parseur Le générateur doit créer un texte conforme à la grammaire JSON Le parseur transforme un texte en une autre représentation. Il annalyse tout texte conforme à la grammaire JSON et possiblement des extensions, des formats non conformes Les limites (longueur, profondeur du texte, des nombres, des strings et de leur contenus) sont fixées au niveau de l'implémentation 16

Conclusion JSON est utilisé en tant que format léger d'échange entre un client et un serveur JSON constitue une alternative à XML notamment lorsque les clients (smartphones) sont contraints Est géré par les navigateurs actuels Est intégré par les plateformes des services Web De multiples implémentations / languages (Unicode) sont disponibles 17

Biblio&Webgraphie www.json.org Présentation Exemples + librairies http://www.ietf.org/rfc RFC 4627 de l'ietf /rfc4627 http://www.unicode.o rg/charts/ www.eclipse.org http://www.eclipse.or g/webtools/ Ensemble des documentations sur le standard unicode Eclipse Web service tools 18

Rappel Unicode Il existe de nombreux standards industriel (par ex. L'encodage pdf), nationaux ou régionaux tels que ISO-latin-1/9 pour l'europe de l'ouest Unicode est le standard d'encodage multilingue des caractères 19

Rappel encodage Unicode Le caractère ASCII comme point de départ Ne nécessite pas d'utiliser des caractères de contrôle pour spécifier un caractère dans un langage exotique 3 formats d'encodage sont utilisés 8, 16, 32 bits (8 bits en accord avec le système ASCII) Un sur-ensemble des formats d'encodage ISO existants répertoriant les caractères, définissant leur encodage, leur sérialisation 20

Rappel encodage Unicode Un caractère abstrait est : définis en tant que plus petit composant du langage ayant une valeur sémantique Nommé et répertorié les caractères d'un même scripte sont groupés Un caractère peut avoir plusieurs codes Encodé sous la forme d'un numéro allant de 0 à 0010FFFF préfixé par un +U pour des raisons de compatibilité avec UTF-16, soit en binaire un valeur maximale de 0000 0000 0001 0000 1111 1111 1111 1111) Sérialisé (par octet) 21

Rappel encodage Unicode Un caractère faisant partie du plan multilingue basique (de U+0000 à U+FFFF) est représenté par une séquence de 6 caractères \uxxxx avec xxx correspondant au code héxadécimale du caractère Exemple : "\u005c" L'ordre des caractères suit celui des alphabets Un caractère est défini par des propriétés (directives visuelles) 22

Rappel encodage Unicode Il existe 3 formats d'encodage UTF-32 (appelé aussi USC4) : numéro sur 32 bits UTF-16 : numéro sur 16 bits Format utilisé à l'origine Un codage par indirection est utilisé pour les valeurs supérieures à 00010000 UTF-8 : chaque numéro est codé par une suite de 0 à 4 octets 23

Rappel - UTF8 Chaque caractère est representé sous la forme d'un code composé d'au plus 4 groupes d'un octet 000-007F 0xxxxxxx Groupe 1 Groupe 2 Groupe 3 Groupe 4 0080-07FF 110xxxxx 10xxxxxx 0800-D7FF 1110xxxx 10xxxxxx 10xxxxxx E000-FFFF 1110xxxx 10xxxxxx 10xxxxxx 10000-10FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx Le code U+F03F soit en binaire 1111 0000 0011 1111 est représenté en unicode par 1110 1111 1000 0000 1000 0011 soit 0xEF 0x80 0xBF 24

Rappel UTF 16 Chaque caractère est representé sous la forme d'un code composé de 1 ou 2 groupes de 2 octets 0000-D7FF E000-FFFF Group 1 Group 2 xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx 10000-10FFFF 110110xxxxxxxxxx 110111xxxxxxxxxx Très populaire Trois encodages sont proposés : little endian, 25 big endian,endianless

UTF-32 Chaque caractère est representé sous la forme d'un groupe de 4 octets 0000-D7FF E000-10FFFF Groupe 1 00000000000xxxxxxxxxxxxxxxx xxxxx Encodage coûteux Trois encodages sont proposés : little endian, big endian,endianless 26

Rappel encodage Unicode L'ensemble des caractères unicode est organisé en plusieurs plans : Plan 0 (U+0000 U+FFFF) Basic Multilingual Plan 1 (U+10000 U+1FFFF) Supplementary Multilingual Plan 2 (U+20000 - U+2FFFF) Supplementary Ideographic Plane 14 (U+E0000 U+EFFFF) Supplementary, Special-purpose Plans 15 et 16 (U+F0000 - U+10FFFF) Private use 27

Rappel encodage Unicode Il existe plusieurs types de caractères Graphic (lettre, nombre, symbole, ponctuation, espace) Format : caractère invisible affectant les caractères voisins (ex : séparateur de ligne) Contrôle : usage défini par un protocole ou standard autre qu'unicode Private-use : usage privé (autre qu'unicode) Surrogate : réservé à UTF-16 Non character : usage interne 28 Reserved : réservé (assignement futur) :

Rappel encodage Unicode Un même caractère peut être représenté en tant que : Caractère précomposé. Par exemple ü est codé U+0075 Caractère composite : U+0075 "u" suivi de U+0308 " ". La composition est utile pour appliquer des traitements particuliers Les caractères sont canoniques lorsqu'ils ne diffèrent pas malgré leur encodage différent Les duplications sont évitées via une consolidation inter-langage 29

Rappel encodage Unicode Un même caractère peut être affiché de plusieurs façons : A A A A La même lettre peut apparaître dans plusieurs alphabets et donc posséder plusieurs codes Seule la lettre au format brut est représentée Le rendu des caractère est une tâche complexe : un même caractère peut prendre plusieurs formats suivant son contexte Un ordre logique de composition lié à la prononciation ou à la façon de taper sur le clavier 30

Rappel encodage unicode Chaque caractère dispose de propriétés facilitant la gestion du caractère d'algorithmes permettant de gérer un caractère Propriétés et algorithmes sont stockés séparement Ces algorithmes permettent l'affichage (de gauche à droite par exemple) en gérant l'ordre logique de composition 31