Est-ce une mauvaise pratique d'utiliser des tirets dans les clés JSON?

12

Je vois beaucoup de questions tournées autour de l'accès aux clés JSON qui utilisent des tirets (cas de kebab), mais maintenant je me demande si je dois simplement m'en tenir à camelCase ou à snake_case dans mes clés. Je sais que les tirets peuvent également créer des mappages complexes lorsqu'ils sont portés entre les langues. J'ai vu des bibliothèques de désérialisation JSON convertir ces clés en style camelCase.

Exemple:

var something = {
  "some-value": 'thing'
}

Contre

var something = {
  "someValue": 'thing',
  "some_other_value": 'thing_two'
}
Matt Oaxaca
la source
4
REST n'a rien à dire sur les formats de charge utile.
Eric Stein
2
Pourquoi utilisez-vous kebab-case en JSON? Les gens utilisent généralement camelCase pour JSON car il est toujours recommandé de suivre les conventions de dénomination de l'environnement de programmation et il est courant d'utiliser camelCase pour les variables en JavaScript. Bien que je parte de l'hypothèse que vous utilisez JSON pour communiquer avec JavaScript.
Alternatex
1
Je vois que la question est balisée avec javascript, mais la question elle-même semble concerner une API entre différentes langues / bibliothèques. Si vous êtes préoccupé par javascript, notez que la notation par points ne fonctionne pas avec les tirets.
Izkata
5
Ce n'est pas vraiment une mauvaise pratique, car JSON est indépendant du langage et ne devrait donc pas être contraint par la syntaxe d'un langage particulier. Cela dit, il est logique d'utiliser uniquement des caractères alphanumériques, car cela peut correspondre directement aux identificateurs dans toutes les langues courantes, ce qui entraînera simplement le moins de problèmes de mappage.
JacquesB
1
@Alternatex: +1 pour "kebab-case" :-)
gnasher729

Réponses:

13

Vous pouvez utiliser n'importe quoi comme clés JSON, tant qu'il est UTF-8 valide, ne contient aucun point de code, et il serait utile que vous puissiez représenter la clé sous forme de chaîne dans le langage de programmation de votre choix. Je pourrais recommander de ne pas utiliser différentes représentations Unicode de la même chaîne (par exemple "Ä" écrit comme un ou deux points de code).

Lecture de certains commentaires: Il semble que certaines personnes essaient de créer des classes avec des variables d'instance qui correspondent aux clés dans les dictionnaires JSON. Ce qui bien sûr ne fonctionne pas si votre clé est "une certaine valeur", sauf si vous écrivez COBOL. Je pense que c'est erroné. J'ai des classes modèles qui sont conçues comme je les veux. JSON est juste utilisé pour remplir les classes de modèle. Je prendrai tout ce que les gars du serveur ont décidé d'utiliser pour les clés et je le mettrai dans mes objets de modèle.

gnasher729
la source
1
urg, vous posez la question de savoir comment votre programme consommateur accède aux clés json. Généralement, cela se fait en analysant le json en tant qu'objet. L'utilisation d'hypènes ou d'autres caractères qui empêchent cela rend la vie difficile à vos consommateurs
Ewan
Et ceci est valable: {"❓": "✅"}
Vinicius Brasil
1
Comment les tirets empêchent-ils quoi que ce soit? Je reçois un dictionnaire, et je peux utiliser "une clé" comme clé, je peux même utiliser "❓" comme clé.
gnasher729
9

Il existe de nombreux systèmes de sérialisation JSON qui sont plus que capables de gérer le mappage entre les noms de champs qui ne sont pas adaptés à une utilisation dans le langage avec lequel ils s'intègrent. Dans la plupart des cas, ils ne sont pas difficiles à utiliser et ne nécessitent qu'un petit effort supplémentaire. Dans un monde idéal, vous n'auriez pas à le faire, mais si votre API utilise déjà des tirets, le changer serait mieux guérir que la maladie. Notez également que l'utilisation des tirets est le style le plus courant dans certaines langues, notamment celles basées sur LISP, donc il y a probablement une minorité silencieuse des consommateurs de votre API qui sont heureux de voir des tirets plutôt qu'un autre format.

Jules
la source
Je voterai dès que possible. J'y ai trouvé un aperçu, merci.
Matt Oaxaca
1

Après avoir passé quelque temps dans l'industrie et avoir travaillé quelques systèmes. Je ne pense pas qu'il existe une meilleure pratique ou un boîtier approprié pour les clés JSON. L'aspect le plus important de toute mise en forme (boîtier / style de code / etc.) est la cohérence et l'adoption par l'équipe.

Si la base de code est fragmentée et incohérente, réunissez-vous en équipe et convenez d'un style cohérent, puis surveillez collectivement le formatage.

Matt Oaxaca
la source