JSON (JavaScript Object Notation) est un format textuel d'échange de données basé sur la syntaxe des objets JavaScript. Il est utilisé partout : des API REST et fichiers de configuration au stockage de données dans les bases de données et applications mobiles. Selon le site officiel de JSON, le format est indépendant du langage et pris en charge par pratiquement toutes les plateformes modernes. JSON est devenu le standard de facto pour le transfert de données entre le client et le serveur.
Points clés
JSON est un format textuel pour représenter des données structurées, basé sur la syntaxe JavaScript. Malgré ses origines en JavaScript, le format est complètement indépendant du langage — des analyseurs et des sérialiseurs existent pour tous les langages de programmation populaires.
L'histoire de JSON a commencé au début des années 2000, lorsque Douglas Crockford a extrait un sous-ensemble de la syntaxe JavaScript pour l'échange de données. En 2013, le format a été normalisé sous ECMA-404, puis sous ISO/IEC 21778:2017. Le nom signifie JavaScript Object Notation.
Le principal avantage de JSON est sa syntaxe minimaliste. Seuls six types sont utilisés pour décrire les données : chaîne, nombre, booléen, null, tableau et objet. Cela suffit pour représenter toute structure de données utilisée dans les applications.
La syntaxe JSON est extrêmement simple : les données sont représentées sous forme de paires clé-valeur, où la clé est une chaîne entre guillemets doubles et la valeur est l'un des six types de base. Les objets sont délimités par des accolades, les tableaux par des crochets. Les chaînes doivent utiliser des guillemets doubles ; les guillemets simples ne sont pas autorisés.
Les nombres en JSON peuvent être entiers ou à virgule flottante, positifs ou négatifs, avec notation exponentielle. Les valeurs booléennes sont représentées par les littéraux true et false, et l'absence de valeur par null. Les tableaux contiennent un ensemble ordonné de valeurs de tout type, y compris des tableaux et objets imbriqués.
{
"name": "JSON",
"type": "text",
"version": 2024,
"flexible": true,
"extensions": null,
"languages": [
"JavaScript",
"Python",
"Java"
],
"nested": {
"info": "prise en charge de l'imbrication"
}
}
| Type | Exemple | Description |
|---|---|---|
| Chaîne | « texte » |
Entre guillemets doubles, avec séquences d'échappement |
| Nombre | 42 |
Entier, virgule flottante, exponentiel |
| Booléen | true |
true ou false — sans guillemets |
| null | null |
Absence de valeur |
| Objet | {} |
Ensemble non ordonné de paires clé-valeur |
| Tableau | [] |
Liste ordonnée de valeurs |
JSON est le principal format d'échange de données pour les API REST dans le développement mobile et web. Le serveur envoie JSON dans le corps de la réponse, le client dans le corps de la requête. L'en-tête Content-Type standard pour JSON est application/json.
Les API REST modernes utilisent JSON pour transmettre tous les types de données : des listes simples aux structures imbriquées complexes avec relations entre entités. Les bibliothèques clientes (comme Axios en JavaScript ou Retrofit sur Android) sérialisent et désérialisent automatiquement JSON, libérant le développeur de l'analyse manuelle.
Un avantage important de JSON dans les API REST est la possibilité de transfert partiel de données (réponse partielle) via des paramètres de requête, ainsi que la prise en charge de ressources imbriquées sans requêtes supplémentaires au serveur.
L'analyse JSON sur les plateformes mobiles est effectuée à l'aide d'outils intégrés. Android utilise Gson de Google ou Moshi de Square, iOS utilise le protocole Codable avec JSONDecoder. Chaque plateforme fournit des outils pratiques pour convertir JSON en objets natifs et vice versa.
Sur Android, l'approche populaire utilise Gson ou Moshi. Il suffit de définir une classe de données avec des annotations @SerializedName et d'appeler fromJson pour la désérialisation. La bibliothèque fait correspondre automatiquement les noms des champs JSON aux propriétés de la classe.
import com.google.gson.Gson
import com.google.gson.annotations.SerializedName
data class User(
@SerializedName("id") val id: Int,
@SerializedName("name") val name: String,
@SerializedName("email") val email: String
)
fun parseJson(jsonString: String): User {
val gson = Gson()
return gson.fromJson(jsonString, User::class.java)
}
Sur iOS, le protocole intégré Codable avec JSONDecoder est utilisé. La structure de données est déclarée comme une struct conforme à Codable, après quoi JSON est analysé en une seule ligne. JSONEncoder effectue la sérialisation inverse — convertit un objet en JSON pour l'envoyer au serveur.
import Foundation
struct User: Codable {
let id: Int
let name: String
let email: String
}
func parseJSON(from data: Data) throws -> User {
let decoder = JSONDecoder()
return try decoder.decode(User.self, from: data)
}
JSON et XML sont les deux principaux formats pour transmettre des données structurées. JSON gagne en simplicité et performance, XML en rigueur et validation. Le choix entre eux dépend des exigences du projet : les API REST utilisent plus souvent JSON, les documents complexes avec schémas utilisent XML.
XML nécessite des balises de fermeture pour chaque élément, ce qui augmente la taille des données de 2 à 3 fois par rapport à JSON. En même temps, XML prend en charge les espaces de noms, les schémas XSD, les attributs et la transformation XSLT, ce qui le rend plus puissant pour la gestion de documents et l'intégration de systèmes d'entreprise.
| Caractéristique | JSON | XML |
|---|---|---|
| Syntaxe | Minimaliste, clé-valeur | Basée sur les balises, ouverture et fermeture |
| Taille des données | Compacte | 2 à 3 fois plus grande que JSON |
| Types de données | Six types de base | Texte uniquement, types via schémas |
| Validation | Non intégrée, via JSON Schema | XSD — stricte et mature |
| Espaces de noms | Aucun | Prise en charge complète des namespace |
| Vitesse d'analyse | Élevée | Plus faible en raison de la complexité |
Les exemples montrent les opérations typiques avec JSON dans le développement mobile : analyse des réponses API, création de JSON pour l'envoi et traitement des structures imbriquées. Comprendre ces schémas est essentiel pour tout développeur d'applications mobiles.
En JavaScript, JSON.stringify convertit un objet en chaîne JSON. Le deuxième argument peut être un tableau de clés pour une sérialisation sélective ou une fonction de remplacement. Le troisième argument définit l'indentation pour le formatage.
interface Order {
id: string;
items: OrderItem[];
total: number;
createdAt: string;
}
const order: Order = {
id: 'ord_001',
items: [{ product: 'phone', quantity: 2 }],
total: 1599.98,
createdAt: '2026-07-03T10:00:00Z'
};
const jsonString = JSON.stringify(order, null, 2);
En Kotlin avec la bibliothèque Moshi, les objets JSON imbriqués sont traités via des classes de données imbriquées. L'annotation @Json spécifie le nom du champ JSON s'il diffère du nom de la propriété de la classe. Les tableaux sont représentés comme List avec le type d'élément.
import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
data class ApiResponse(
val status: String,
val data: List<Product>,
val pagination: Pagination
)
data class Product(
val id: Int,
val title: String,
val price: Double
)
data class Pagination(
val page: Int,
val total: Int
)
val moshi = Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.build()
JSON Schema est un langage pour décrire la structure d'un document JSON, similaire à XSD pour XML. En utilisant JSON Schema, vous pouvez spécifier des champs obligatoires, des types de données, des plages de valeurs, des motifs de chaînes et une structure imbriquée. La validation du schéma détecte les erreurs de données avant leur traitement dans l'application.
JSON Schema est largement utilisé dans OpenAPI (Swagger) pour documenter les API REST, dans les formulaires de validation de données d'entrée et dans les tests. Le fichier de schéma est lui-même un document JSON, permettant aux analyseurs JSON standard de le lire. Des validateurs en ligne et des bibliothèques existent pour tous les langages de programmation populaires.
Dans le développement mobile, JSON Schema est utilisé pour valider les réponses du serveur pendant les tests et pour vérifier les fichiers de configuration. Des bibliothèques comme network-validator sur Android et json-schema-validator permettent d'intégrer la validation directement dans le processus de développement, prévenant les erreurs à un stade précoce.
Questions fréquentes
JSON prend en charge six types : chaîne (entre guillemets doubles), nombre (entier et à virgule flottante), booléen (true/false), null, objet (paires clé-valeur dans {}) et tableau (liste de valeurs dans []). Cela suffit pour toute structure de données dans les applications.
Non, le standard JSON ne prend pas en charge les commentaires. Si vous avez besoin de commentaires, utilisez JSON5 (JSON étendu) ou ajoutez un champ de description, par exemple « _comment » : « explication ». Certains outils, comme VS Code, prennent en charge les commentaires dans les fichiers JSON de configuration, mais il s'agit d'une extension non standard.
JSONB est un format de stockage binaire pour JSON dans PostgreSQL. Contrairement au JSON textuel, JSONB est plus rapide à traiter, prend en charge l'indexation (index GIN) et garantit l'unicité des clés. Cependant, JSONB occupe plus d'espace disque en raison des métadonnées ajoutées.
Utilisez JSONLint (jsonlint.com) pour une validation rapide, le JSON.parse() intégré en JavaScript avec try-catch, ou des plugins IDE. La validation inclut la vérification des guillemets corrects, de la fermeture des parenthèses et de la conformité des types. Pour les schémas complexes, utilisez JSON Schema Validator.
Il n'y a aucune limite dans la spécification JSON. En pratique, la taille est limitée par la mémoire de l'appareil et les capacités de l'analyseur. Pour les applications mobiles, il est recommandé de ne pas dépasser 1 à 2 Mo par réponse, et pour les grandes données, d'utiliser la pagination ou le streaming.
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.
Lisez aussi