Existe-t-il une norme sur le nommage JSON? Je vois la plupart des exemples utilisant toutes les minuscules séparées par un trait de soulignement (lower_case). Mais pouvez-vous utiliser PascalCase ou camelCase?
Il n’existe pas de norme SINGLE, mais j’ai vu 3 styles que vous mentionnez ("Pascal/Microsoft", "Java" (camelCase
) et "C" (underscores, snake_case
)) - ainsi que au moins un de plus, kebab-case
comme longer-name
).
Cela semble dépendre principalement de l'historique des développeurs du service en question; ceux qui ont un arrière-plan c/c ++ (ou des langages qui adoptent une dénomination similaire, qui inclut de nombreux langages de script, Ruby etc.) choisissent souvent la variante de soulignement; et se reposer de la même manière (Java vs .NET). La bibliothèque Jackson mentionnée, par exemple, assume la convention de dénomination de bean Java (camelCase
)
UPDATE: ma définition de "standard" est une convention SINGLE. Donc, même si on peut dire "oui, il y a beaucoup de normes", pour moi, il y a plusieurs Naming Conventions
, dont aucune n'est "la" norme dans son ensemble. L'un d'eux pourrait être considéré comme la norme pour une plate-forme spécifique, mais étant donné que JSON est utilisé pour une interopérabilité entre plates-formes qui peut avoir un sens ou non.
Dans ce document Guide de style Google JSON (recommandations pour la création d’API JSON chez Google),
Il recommande que:
Les noms de propriété doivent être camelCased , ASCII chaînes.
Le premier caractère doit être une lettre, un trait de soulignement (_) ou un signe dollar ($).
Exemple:
{
"thisPropertyIsAnIdentifier": "identifier value"
}
Notre équipe utilise cette convention.
Il y a pas de nom standard des clés dans JSON.
Imposer une convention de nommage JSON est très déroutant. Cependant, cela peut facilement être compris si vous le divisez en composants.
Langage de programmation pour générer du JSON
JSON lui-même n'a pas de nom standard pour les clés
Langage de programmation pour l'analyse JSON
snake_case aura toujours du sens pour ceux qui ont des entrées Java car les bibliothèques JSON existantes pour Java n'utilisent que des méthodes pour accéder aux clés au lieu d'utiliser le standard. dot.syntax . Cela signifie que cela ne ferait pas beaucoup de mal à Java d’accéder aux touches de snake_cased par rapport à l’autre langage de programmation qui peut faire le dot.syntax .
Exemple pour le package Java org.json
JsonObject.getString("snake_cased_key")
Exemple pour le package Java com.google.gson
JsonElement.getAsString("snake_cased_key")
Le choix de la convention de dénomination JSON appropriée pour votre implémentation JSON dépend de votre pile technologique. Dans certains cas, on peut utiliser snake_case , camelCase ou toute autre convention de dénomination.
Une autre chose à considérer est le poids à accorder au générateur JSON par rapport à l'analyseur JSON et/ou au JavaScript frontal. En général, plus de poids devrait être mis du côté du générateur JSON plutôt que du côté de l'analyseur JSON. En effet, la logique applicative réside généralement du côté du générateur JSON.
De même, si le côté analyseur JSON est inconnu, vous pouvez déclarer ce qui peut jamais fonctionner pour vous.
Notamment pour moi sur NodeJS, si je travaille avec des bases de données et que mes noms de champs sont séparés par un soulignement, je les utilise également dans les clés de structure.
Ceci est dû au fait que les champs de base de données comportent de nombreux acronymes/abréviations, de sorte que quelque chose comme appSNSInterfaceRRTest semble un peu brouillon, mais app_sns_interface_rr_test est plus agréable.
En Javascript, les variables sont toutes camelCase et les noms de classe (constructeurs) sont ProperCase, vous verrez donc quelque chose comme:
var devTask = {
task_id: 120,
store_id: 2118,
task_name: 'generalLedger'
};
ou
generalLedgerTask = new GeneralLedgerTask( devTask );
Et bien sûr, les clés/chaînes JSON sont entourées de guillemets, mais vous devez ensuite utiliser le fichier JSON.stringify et transmettre des objets JS. Vous n'avez donc pas à vous soucier de cela.
J'ai eu du mal avec cela un peu jusqu'à ce que je trouve ce juste milieu entre les conventions de nommage JSON et JS.
Il semble y avoir suffisamment de variations pour que les utilisateurs fassent de leur mieux pour autoriser la conversion de toutes les conventions en autres: http://www.cowtowncoder.com/blog/archives/cat_json.html
Notamment, l’analyseur Jackson JSON mentionné préfère bean_naming
.
Je pense qu'il n'y a pas de convention officielle de nommage pour JSON, mais vous pouvez suivre certains leaders du secteur pour voir comment cela fonctionne.
Google, qui est l'une des plus grandes entreprises informatiques au monde, dispose d'un guide de style JSON: https://google.github.io/styleguide/jsoncstyleguide.xml
En profitant, vous pouvez trouver d’autres guides de styles, que Google définit, ici: https://github.com/google/styleguide
Comme d’autres l’ont dit, il n’existe pas de norme et vous devriez donc en choisir une vous-même. Voici quelques points à considérer lorsque vous le faites:
Si vous utilisez JavaScript pour utiliser JSON, l'utilisation de la même convention de dénomination pour les propriétés des deux propriétés assurera la cohérence visuelle et, éventuellement, des possibilités de réutilisation du code plus propre.
Une petite raison d'éviter l'affaire kebab est que les traits d'union peuvent être en conflit visuel avec les caractères -
qui apparaissent dans les valeurs.
{
"bank-balance": -10
}