Types supportés et schémas JSON
Les briques de vos schémas
Pour définir la structure de vos réponses, vous disposez de sept types JSON. Chacun correspond à un besoin précis dans la modélisation de vos données. Comprendre ces types est essentiel pour concevoir des schémas efficaces.
Les sept types supportés
string
Le type le plus courant. Utilisé pour les noms, descriptions, identifiants, et tout contenu textuel.
{
"type": "object",
"properties": {
"nom": { "type": "string" },
"description": { "type": "string" }
}
}
number
Couvre les entiers et les flottants. Pas de distinction entre integer et float — un seul type number gère les deux.
{
"properties": {
"prix": { "type": "number" },
"quantite": { "type": "number" }
}
}
boolean
Vrai ou faux. Parfait pour les flags, les validations, les décisions binaires.
{
"properties": {
"en_stock": { "type": "boolean" },
"livraison_express": { "type": "boolean" }
}
}
object
Permet d’imbriquer des structures. Un objet peut contenir d’autres objets, des tableaux, des scalaires — sans limite de profondeur.
{
"type": "object",
"properties": {
"adresse": {
"type": "object",
"properties": {
"rue": { "type": "string" },
"ville": { "type": "string" },
"code_postal": { "type": "string" }
}
}
}
}
array
Listes d’éléments du même type. Vous pouvez avoir des tableaux de strings, de numbers, d’objets, ou même de tableaux.
{
"properties": {
"competences": {
"type": "array",
"items": { "type": "string" }
}
}
}
enum
Un ensemble fini de valeurs autorisées. Indispensable pour les catégorisations et les classifications.
{
"properties": {
"priorite": {
"type": "string",
"enum": ["basse", "moyenne", "haute", "critique"]
}
}
}
anyOf
Permet de définir des unions de types. Un champ peut accepter plusieurs structures différentes. Utile quand un même champ peut avoir des formes variées.
{
"properties": {
"contact": {
"anyOf": [
{
"type": "object",
"properties": {
"email": { "type": "string" }
}
},
{
"type": "object",
"properties": {
"telephone": { "type": "string" }
}
}
]
}
}
}
Combiner les types
La puissance des schémas vient de la combinaison de ces types. Voici un schéma réaliste pour analyser un produit :
{
"type": "object",
"properties": {
"nom": { "type": "string" },
"prix": { "type": "number" },
"en_stock": { "type": "boolean" },
"categorie": {
"type": "string",
"enum": ["electronique", "vetement", "alimentaire", "autre"]
},
"tags": {
"type": "array",
"items": { "type": "string" }
},
"fabricant": {
"type": "object",
"properties": {
"nom": { "type": "string" },
"pays": { "type": "string" }
}
}
}
}
Ce schéma mélange des scalaires, un enum, un tableau et un objet imbriqué. Le modèle respectera chaque contrainte à chaque appel.
Champs optionnels
Pour rendre un champ optionnel, utilisez anyOf avec null :
{
"properties": {
"telephone": {
"anyOf": [
{ "type": "string" },
{ "type": "null" }
]
}
}
}
En Pydantic, cela correspond à telephone: str | None.
Points clés à retenir
- Sept types disponibles :
string,number,object,array,boolean,enum,anyOf - Les types se combinent librement pour modéliser des structures complexes
- Les champs optionnels utilisent
anyOfavecnull - Pas de distinction integer/float — un seul type
number enumforce des valeurs prédéfinies pour les classifications