JSON Toolkit

null ou omettre le champ

L’essentiel : `null` dit que le champ existe sans valeur ; omettre dit que le champ n'existe pas. Corps PATCH, fusion de configuration et préremplissage de formulaire sont là où la différence mord.

Intermédiaire~3 min de lecturePublié le 2026-10-30Mis à jour le 2026-10-30
La différence sémantique entre null et un champ absent

L'essentiel : envoyez null quand le consommateur doit distinguer « effacé » de « intact » — dans un corps PATCH, l'omission laisse le champ tranquille et un null explicite l'efface — et gardez une convention par champ pour que les réponses et les fusions de configuration restent stables.

La différence

{ "nickname": null }

Présent, vide. Le consommateur sait que le champ a été explicitement effacé.

{ }

Absent. Le consommateur ne peut pas distinguer « jamais défini » de « non pris en charge ».

En JavaScript la distinction est concrète :

'nickname' in obj          // false — absent
obj.nickname === null      // true  — present and null
obj.nickname === undefined // true  — both cases

Où cela compte

Corps PATCH. {"nickname": null} efface le pseudo. {} ne change rien. Si le gestionnaire traite « null » et « manquant » comme la même chose, les utilisateurs ne peuvent jamais effacer le champ — ils ne peuvent que définir une chaîne vide, ce qui est différent.

Implémentez avec la présence de clé, pas la valeur :

if (Object.hasOwn(patch, 'nickname')) {
  target.nickname = patch.nickname;   // null allowed
}

Fusion de configuration. L'omission hérite du défaut ; null le désactive explicitement. C'est exactement le comportement des valeurs Helm et Kubernetes.

Préremplissage de formulaire. Un null s'affiche comme vide, et un champ manquant aussi, mais la soumission diffère : avait une valeur, maintenant effacé → envoyer null ; jamais rempli → omettre. Sans la distinction, effacer ressemble à ne pas toucher.

Conventions

Situation Convention
Corps de réponse Garder null ; forme stable, types plus simples
Requêtes PATCH null efface, l'omission préserve
PUT (remplacement complet) L'omission signifie suppression — tout le document est remplacé
Fusion de configuration Omission = défaut, null = désactivé
Base de données null pour inconnu ou non applicable ; '' pour connu-vide

Gardez les formes de réponse stables. Une liste où certains éléments portent avatar et d'autres non oblige à des vérifications 'avatar' in item à chaque site d'appel. avatar: null est plus facile à consommer.

Trois choses à ne pas faire

N'utilisez pas "" pour null. Un pseudo vide et un pseudo non défini sont des états différents dans la plupart des domaines.

N'utilisez pas 0 ou -1 comme sentinelles. Zéro est un nombre légitime, et la sentinelle corrompt chaque moyenne que vous calculez.

Ne mélangez pas les conventions par point de terminaison. Deux conventions signifient deux chemins de code dans chaque client.

FAQ

Qu'est-ce qui décide entre null et un champ omis ?

Demandez si le consommateur doit distinguer « explicitement effacé » de « jamais défini ». Dans un corps PATCH il le doit, donc null efface et l'absence préserve ; dans les réponses, garder null rend la forme stable et les types client plus simples.

Comment un point de terminaison PATCH distingue-t-il l'effacement du laisser-tranquille ?

Vérifiez la présence de clé, pas la valeur : Object.hasOwn(patch, 'nickname') vous dit que le champ a été envoyé, et seulement alors assignez-le, null inclus. Si le gestionnaire traite null et manquant comme la même chose, les utilisateurs ne peuvent jamais effacer le champ et ne peuvent que se rabattre sur une chaîne vide.

Pourquoi les corps de réponse devraient-ils garder null ?

Une forme stable signifie que les clients n'ont pas besoin d'une vérification 'avatar' in item pour chaque clé facultative. Quand certains éléments de liste portent avatar et d'autres l'omettent, cette vérification est dupliquée à chaque site d'appel et facile à rater.

Lectures complémentaires

Outils associés

Articles liés

Points clés pour concevoir des contrats de données d'API JSON

Six choses sont très difficiles à changer une fois livrées : les enveloppes de réponse, les formats d'erreur, la forme de pagination, la représentation des identifiants et du temps, la sémantique de null contre absent, et l'évolution de version.

Intermédiaire~13 min de lectureMis à jour le 2026-10-30

JSON Pointer, Patch et Merge Patch

Trois courtes spécifications forment un protocole de modification : Pointer localise, Patch édite précisément, Merge Patch fusionne partiellement. Un mauvais choix nuit aux tableaux et à la concurrence.

Intermédiaire~12 min de lectureMis à jour le 2026-10-30

FAQ utilisation des outils : données, fichiers et export

Les données sont-elles téléversées, quelle taille de fichier fonctionne, quelque chose est-il stocké localement, pourquoi le chinois devient-il des échappements : dix questions qui explicitent les vraies frontières d'un outil JSON en ligne.

Débutant~10 min de lectureMis à jour le 2026-10-30