Convención de Nomenclatura JSON


¿Existe un estándar sobre el nombre JSON? Veo la mayoría de los ejemplos usando todas las minúsculas separadas por subrayado (lower_case). Pero, ¿puedes usar PascalCase o camelCase?

 248
Author: dontGoPlastic, 2011-04-04

7 answers

No hay UN SOLO estándar, pero he visto 3 estilos que mencionas ("Pascal/Microsoft", "Java" (camelCase) y "C" (guiones bajos, snake_case)) as así como al menos uno más, kebab-case como longer-name).

En su mayoría parece depender de lo que tenían los desarrolladores de background del servicio en cuestión; aquellos con background c / c++ (o lenguajes que adoptan nombres similares, que incluye muchos lenguajes de scripting, ruby, etc.) a menudo eligen la variante underscore; y rest similarmente (Java vs. NET). se mencionó, por ejemplo, asume Java bean convención de nomenclatura (camelCase)

ACTUALIZACIÓN: mi definición de "estándar" es una convención ÚNICA. Así que si bien uno podría afirmar "sí, hay muchos estándares", para mí hay múltiples Naming Conventions, ninguno de los cuales es" El " estándar en general. Uno de ellos podría considerarse el estándar para una plataforma específica, pero dado que JSON se utiliza para la interoperabilidad entre plataformas que pueden o no tener mucho sentido.

 159
Author: StaxMan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-09 23:20:03

En este documento Guía de estilo JSON de Google (recomendaciones para crear API JSON en Google),

Se recomienda que:

  1. Los nombres de propiedad deben ser camelCased, cadenas ASCII.

  2. El primer carácter debe ser una letra, un subrayado (_) o un signo de dólar ($).

Ejemplo:

{
  "thisPropertyIsAnIdentifier": "identifier value"
}

Nuestro equipo utiliza esta convención.

 274
Author: ThoQ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-16 14:05:25

Premisa

Hay no hay nomenclatura estándar de claves en JSON.

Factores impulsores

Imponer una convención de nomenclatura JSON es muy confuso. Sin embargo, esto se puede averiguar fácilmente si se descompone en componentes.

  1. Lenguaje de programación para generar JSON

    • Python-snake_case
    • PHP-snake_case
    • Java-camelCase
    • JavaScript - camelCase
  2. JSON en sí no tiene nomenclatura estándar de claves

  3. Lenguaje de programación para analizar JSON

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

Mezclar-combinar los componentes

  1. Python "JSON" Python - snake_case
  2. Python "JSON" PHP - snake_case
  3. Python "JSON" Java - snake_case o camelCase
  4. Python "JSON" JavaScript - snake_case tendrá sentido; atornillar el front-end de todos modos
  5. Python "JSON" usted no sabe - snake_case tendrá sentido; atornille el analizador de todos modos
  6. PHP "JSON" Python - snake_case
  7. PHP " JSON " PHP - snake_case
  8. PHP "JSON" Java - snake_case o camelCase
  9. PHP "JSON" JavaScript - snake_case tendrá sentido; atornillar el front-end de todos modos
  10. PHP "JSON" PHP - snake_case
  11. PHP "JSON" usted no sabe - snake_case tendrá sentido; atornille el analizador de todos modos
  12. Java " JSON "Python - camelCase o snake_case
  13. Java "JSON" PHP - camelCase o snake_case
  14. Java "JSON" Java - camelCase
  15. Java "JSON" JavaScript - camelCase
  16. Java "JSON" usted no sabe - camelCase tendrá sentido; atornille el analizador de todos modos
  17. JavaScript " JSON " Python - snake_case tendrá sentido; atornille el front-end de todos modos
  18. JavaScript "JSON" PHP - snake_case tendrá sentido; atornillar el front-end de todos modos
  19. JavaScript "JSON" Java - camelCase
  20. JavaScript "JSON" JavaScript - camelCase

Algunas implementaciones reales

Conclusiones

Elegir la convención de nomenclatura JSON correcta para su implementación JSON depende de su pila de tecnología. Hay casos en los que se puede usar snake_case, camelCase , o cualquier otra convención de nomenclatura.

Otra cosa a considerar es el peso que se debe poner en el generador JSON frente al analizador JSON. En general, se debe poner más peso en el lado del generador JSON en lugar del lado del analizador JSON. Esto se debe a que la lógica de negocio generalmente reside en el lado del generador JSON.

Además, si el lado del analizador JSON es desconocido, puede declarar lo que puede funcionar para usted.

 100
Author: Abel Callejo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-09 23:17:22

Notablemente para mí en NodeJS, si estoy trabajando con bases de datos y mis nombres de campo están separados por guiones bajos, también los uso en las claves de estructura.

Esto se debe a que los campos db tienen muchos acrónimos/abreviaturas, por lo que algo como appSNSInterfaceRRTest se ve un poco desordenado, pero app_sns_interface_rr_test es mejor.

En Javascript las variables son todas camelCase y los nombres de clase (constructores) son ProperCase, así que verás algo como

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

O

generalLedgerTask = new GeneralLedgerTask( devTask );

Y, por supuesto, en JSON las claves/cadenas están envueltas en comillas dobles, pero luego solo usa el JSON.stringify y pass en objetos JS, así que no tiene que preocuparse por eso.

Luché con esto un poco hasta que encontré este medio feliz entre las convenciones de nomenclatura JSON y JS.

 14
Author: Clarence Liu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-01 20:04:50

Parece que hay suficiente variación que la gente se sale de su camino para permitir la conversión de todas las convenciones a otros: http://www.cowtowncoder.com/blog/archives/cat_json.html

Notablemente, el mencionado analizador JSON de Jackson prefiere bean_naming.

 7
Author: entropo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-04 19:51:13

Creo que no hay una convención de nomenclatura oficial para JSON, pero puede seguir a algunos líderes de la industria para ver cómo funciona.

Google, que es una de las compañías de TI más grandes del mundo, tiene una guía de estilo JSON: https://google.github.io/styleguide/jsoncstyleguide.xml

Aprovechando, puede encontrar otra guía de estilos, que Google define, aquí: https://github.com/google/styleguide

 1
Author: Filipe de Lima Brito,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-15 22:06:09

Como otros han declarado que no hay un estándar, por lo que debe elegir uno usted mismo. Aquí hay un par de cosas a considerar al hacerlo:

  1. Si está utilizando JavaScript para consumir JSON, usar la misma convención de nomenclatura para las propiedades en ambos proporcionará consistencia visual y posiblemente algunas oportunidades para la reutilización de código más limpio.

  2. Una pequeña razón para evitar kebab-case es que los guiones pueden chocar visualmente con - caracteres que aparecen en valor.

    {
      "bank-balance": -10
    }
    
 -1
Author: moderatemisbehaviour,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-30 15:38:40