Convention de nommage JSON

Existe-t-il une norme sur le nommage JSON? Je vois la plupart des exemples utilisant tous les minuscules séparés par underscore (lower_case). Mais, pouvez-vous utiliser PascalCase ou camelCase?

248
demandé sur dontGoPlastic 2011-04-04 23:43:15

7 réponses

Il N'y a pas de standard unique, mais j'ai Vu 3 styles que vous mentionnez ("Pascal / Microsoft"," Java "(camelCase) et" C " (underscores, snake_case)) - ainsi qu'au moins un de plus, kebab-case comme longer-name).

Cela semble principalement dépendre de l'arrière-plan des développeurs du service en question; ceux qui ont un arrière-plan C / C++ (ou des langages qui adoptent un nom similaire, qui inclut de nombreux langages de script, ruby, etc.) choisissent souvent une variante de soulignement; et rest de la même manière (Java vs. net). Bibliothèque Jackson qui a été mentionné, par exemple, suppose la convention de nommage Java bean(camelCase)

Mise à jour: ma définition de "standard" est une convention unique. Ainsi, alors que l'on pourrait prétendre "oui, il y a beaucoup de normes", pour moi, il y a plusieurs Naming Conventions, dont aucun n'est "le" standard global. 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 l'interopérabilité entre les plates-formes qui peuvent ou peuvent ne pas avoir beaucoup de sens.

159
répondu StaxMan 2016-12-09 23:20:03

Dans ce document Google JSON Style Guide (recommandations pour la construction D'API JSON chez Google),

, Il recommande que:

  1. Les noms de propriétés doivent être camelCased , chaînes ASCII.

  2. 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.

274
répondu ThoQ 2017-10-16 14:05:25

Prémisse

Il y a Pas de dénomination standard des clés dans JSON.

Facteurs Moteurs

Imposer une convention de nommage JSON est très déroutant. Cependant, cela peut facilement être compris si vous le décomposez en composants.

  1. Langage de programmation pour générer JSON

    • Python-snake_case
    • PHP-snake_case
    • Java-camelCase
    • JavaScript - camelCase
  2. JSON lui même n'a pas de dénomination standard des clés

  3. Langage de Programmation pour l'analyse JSON

    • Python-snake_case
    • PHP-snake_case
    • Java-camelCase
    • JavaScript-camelCase

Mélanger-assortir les composants

  1. Python "JSON" Python - snake_case
  2. Python "JSON" PHP - snake_case
  3. Python "JSON" Java - snake_case ou camelCase
  4. Python "JSON" JavaScript - snake_case sens; vis le front-end de toute façon
  5. Python "JSON" vous ne savez pas - snake_case aura du sens; visser l'analyseur de toute façon
  6. PHP "JSON" Python - snake_case
  7. PHP " JSON " PHP - snake_case
  8. PHP "JSON" Java - snake_case ou camelCase
  9. PHP "JSON" JavaScript - snake_case aura du sens; vis le front-end de toute façon
  10. PHP "JSON" PHP - snake_case
  11. PHP "JSON" vous ne savez pas - snake_case aura un sens; visser l'analyseur de toute façon
  12. Java " JSON "Python - camelCase ou snake_case
  13. Java "JSON" PHP - camelCase ou snake_case
  14. Java "JSON" Java - camelCase
  15. Java "JSON" JavaScript - camelCase
  16. Java "JSON" vous ne savez pas - camelCase aura un sens; visser l'analyseur de toute façon
  17. JavaScript " JSON " Python - snake_case aura du sens; vis le front-end de toute façon
  18. JavaScript " JSON "PHP - snake_case aura du sens; vis le front-end de toute façon
  19. JavaScript "JSON" Java - camelCase
  20. JavaScript "JSON" JavaScript - camelCase

Quelques implémentations réelles

Conclusions

Le choix de la bonne convention de nommage JSON pour votre implémentation JSON dépend de votre pile technologique. Il y a des cas où l'on peut utiliser snake_case, camelCase , ou toute autre convention de nommage.

Une autre chose à considérer est le poids à mettre sur le JSON-generator vs le JSON-parser. 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. C'est parce que la logique métier réside généralement du côté du générateur JSON.

En outre, si le côté JSON-parser est inconnu, vous pouvez déclarer ce qui peut fonctionner pour vous.

100
répondu Abel Callejo 2018-04-09 23:17:22

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 trait de soulignement, je les utilise également dans les clés struct.

C'est parce que les db ont beaucoup d'acronymes/abréviations donc quelque chose comme appSNSInterfaceRRTest ressemble 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, donc vous verrez quelque chose comme

var devTask = {
        task_id: 120,
        store_id: 2118,
        task_name: 'generalLedger'
    };

Ou

generalLedgerTask = new GeneralLedgerTask( devTask );

Et bien sûr dans JSON, les clés / chaînes sont enveloppées de guillemets doubles, mais vous utilisez simplement le JSON.stringify et passer dans les objets JS, donc ne vous inquiétez pas à ce sujet.

J'ai un peu lutté avec cela jusqu'à ce que je trouve ce juste milieu entre les conventions de nommage JSON et JS.

14
répondu Clarence Liu 2014-05-01 20:04:50

Semble qu'il y a assez de variation que les gens sortent de leur chemin pour permettre la conversion de toutes les conventions à d'autres: http://www.cowtowncoder.com/blog/archives/cat_json.html

Notamment, L'analyseur Jackson JSON mentionné préfère bean_naming.

7
répondu entropo 2011-04-04 19:51:13

Je pense qu'il n'y a pas de convention de nommage officielle pour JSON, mais vous pouvez suivre certains leaders de l'industrie pour voir comment cela fonctionne.

Google, qui est L'une des plus grandes entreprises informatiques du monde, a un guide de style JSON: https://google.github.io/styleguide/jsoncstyleguide.xml

En profitant, vous pouvez trouver d'autres styles guide, que Google définit, ici: https://github.com/google/styleguide

1
répondu Filipe de Lima Brito 2016-05-15 22:06:09

Comme d'autres l'ont dit, il n'y a pas de norme, vous devriez donc en choisir une vous-même. Voici quelques choses à considérer lorsque vous le faites:

  1. Si vous utilisez JavaScript pour consommer JSON, l'utilisation de la même convention de nommage pour les propriétés dans les deux fournira une cohérence visuelle et éventuellement des opportunités de réutilisation de code plus propre.

  2. Une petite raison d'éviter kebab-case est que les tirets peuvent entrer en conflit visuellement avec - caractères qui apparaissent dans valeur.

    {
      "bank-balance": -10
    }
    
-1
répondu moderatemisbehaviour 2018-07-30 15:38:40