Konwencja nazewnictwa JSON

Czy istnieje standard nazewnictwa JSON? Większość przykładów używa małych liter oddzielonych podkreśleniem (lower_case). Ale czy możesz użyć PascalCase lub camelCase?

 248
Author: dontGoPlastic, 2011-04-04

7 answers

Nie ma jednego standardu, ale widziałem 3 style, o których wspomniałeś ("Pascal/Microsoft"," Java "(camelCase) i" C " (podkreślenia, snake_case)) -- a także co najmniej jeden więcej, kebab-case Jak longer-name).

Wydaje się głównie zależeć od tego, jakie tło mieli Programiści danej usługi; Ci z tłem c / C++ (lub językami, które przyjmują podobne nazewnictwo, które obejmuje wiele języków skryptowych, ruby itp.) często wybierają wariant podkreślenia; i reszta podobnie (Java vs. NET). wspomniano np. o konwencji nazewnictwa Java bean(camelCase)

Aktualizacja: moja definicja "standardu" jest jedną konwencją. Można więc twierdzić ,że "tak, istnieje wiele standardów", ale dla mnie istnieje wiele Naming Conventions, z których żaden nie jest ogólnie "standardem". Jeden z nich można uznać za standard dla konkretnej platformy, ale biorąc pod uwagę, że JSON jest używany do interoperacyjności między platformami, które mogą lub nie mają większego sensu.

 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/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-09 23:20:03

[1]}w tym dokumencie Google JSON Style Guide (Zalecenia dotyczące budowania interfejsów API JSON w Google),

Zaleca:

  1. Nazwy właściwości muszą być camelCased , ciągami ASCII.

  2. Pierwszy znak musi być literą, podkreślnikiem ( _ ) lub znakiem dolara ($).

Przykład:

{
  "thisPropertyIsAnIdentifier": "identifier value"
}

Nasz zespół używa tej konwencji.

 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/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-16 14:05:25

Założenie

Jest Brak standardowego nazewnictwa kluczy w JSON.

Czynniki napędowe

Narzucanie konwencji nazewnictwa JSON jest bardzo mylące. Można to jednak łatwo zorientować, jeśli podzielisz je na komponenty.

  1. Język programowania do generowania JSON

    • Python-snake_case
    • PHP-snake_case
    • Java-camelCase
    • JavaScript - camelCase
  2. Sam JSON nie ma standardowego nazewnictwa kluczy

  3. Język programowania do parsowania JSON

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

Mix-dopasuj komponenty

  1. Python "JSON" Python - snake_case
  2. Python "JSON" PHP - snake_case
  3. Python "JSON" Java - snake_case lub camelCase
  4. Python "JSON" JavaScript - snake_case będzie miało sens; wkręć front-end tak czy inaczej
  5. Python "JSON" nie wiesz - snake_case będzie miało sens; wkręć parser tak czy inaczej
  6. PHP "JSON" Python - snake_case
  7. PHP " JSON " PHP - snake_case
  8. PHP "JSON" Java - snake_case lub camelCase
  9. PHP "JSON" JavaScript - snake_case będzie miało sens; wkręć front-end tak czy inaczej
  10. PHP "JSON" PHP - snake_case
  11. PHP "JSON" nie wiesz - snake_case będzie miało sens; wkręć parser tak czy inaczej
  12. Java " JSON "Python - camelCase lub snake_case
  13. Java "JSON" PHP - camelCase lub snake_case
  14. Java "JSON" Java - camelCase
  15. Java "JSON" JavaScript - camelCase
  16. Java "JSON" nie wiesz - camelCase będzie miało sens; wkręć parser tak czy inaczej
  17. JavaScript " JSON " Python - snake_case będzie miało sens; wkręć front-end tak czy inaczej
  18. JavaScript "JSON" PHP - snake_case będzie miało sens; wkręć front-end tak czy inaczej
  19. JavaScript "JSON" Java - camelCase
  20. JavaScript "JSON" JavaScript - camelCase

Niektóre rzeczywiste implementacje

Wnioski

Wybór właściwej konwencji nazewnictwa JSON dla implementacji JSON zależy od stosu technologii. Istnieją przypadki, w których można użyć snake_case, camelCase , lub jakiejkolwiek innej konwencji nazewnictwa.

Kolejną rzeczą, którą należy wziąć pod uwagę, jest waga, jaką należy umieścić na generatorze JSON vs parserze JSON. Ogólnie rzecz biorąc, większą wagę należy położyć po stronie JSON-generatora, a nie po stronie JSON-parsera. Dzieje się tak, ponieważ logika biznesowa zwykle znajduje się po stronie JSON-generatora.

Ponadto, jeśli strona JSON-parsera jest nieznana, możesz zadeklarować, co kiedykolwiek może dla Ciebie zadziałać.

 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/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-09 23:17:22

Szczególnie dla mnie w NodeJS, jeśli pracuję z bazami danych i moje nazwy pól są oddzielone podkreśleniem, używam ich również w kluczach struct.

Dzieje się tak dlatego, że pola db mają wiele akronimów/skrótów, więc coś w stylu appsnsinterfacertest wygląda trochę niechlujnie, ale app_sns_interface_rr_test jest ładniejsze.

W Javascript wszystkie zmienne są camelCase, a nazwy klas (konstruktory) są ProperCase, więc zobaczysz coś jak

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

Lub

generalLedgerTask = new GeneralLedgerTask( devTask );

I oczywiście w JSON klucze / łańcuchy są zawinięte w podwójne cudzysłowy, ale wtedy po prostu używasz JSON.stringify i pass w obiektach JS, więc nie musisz się o to martwić.

Trochę się z tym zmagałem, dopóki nie znalazłem tego szczęśliwego medium między konwencjami nazw JSON i 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/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-01 20:04:50

Wydaje się, że jest wystarczająco dużo wariacji, że ludzie wychodzą ze swojej drogi, aby umożliwić konwersję ze wszystkich konwencji do innych: http://www.cowtowncoder.com/blog/archives/cat_json.html

W szczególności wspomniany Jackson JSON parser preferuje 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/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-04 19:51:13

Myślę, że nie ma oficjalnej konwencji nazewnictwa dla JSON, ale możesz śledzić niektórych liderów branży, aby zobaczyć, jak to działa.

Google, która jest jedną z największych firm IT na świecie, ma JSON style guide: https://google.github.io/styleguide/jsoncstyleguide.xml

Korzystając z tego, można znaleźć inne style guide, które definiuje Google, tutaj: 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/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-15 22:06:09

Jak inni stwierdzili, nie ma standardu, więc powinieneś wybrać jeden samodzielnie. Oto kilka rzeczy, które należy wziąć pod uwagę przy robieniu tego:

  1. Jeśli używasz JavaScript do używania JSON, użycie tej samej konwencji nazewnictwa dla właściwości w obu zapewni wizualną spójność i ewentualnie pewne możliwości czystszego ponownego użycia kodu.

  2. Mały powód, aby uniknąć Kebab-case jest to, że myślniki mogą kolidować wizualnie z - znaków, które pojawiają się w wartości.

    {
      "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/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-30 15:38:40