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?
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.
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:
Nazwy właściwości muszą być camelCased , ciągami ASCII.
Pierwszy znak musi być literą, podkreślnikiem ( _ ) lub znakiem dolara ($).
Przykład:
{
"thisPropertyIsAnIdentifier": "identifier value"
}
Nasz zespół używa tej konwencji.
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.
-
Język programowania do generowania JSON
- Python-snake_case
- PHP-snake_case
- Java-camelCase
- JavaScript - camelCase
Sam JSON nie ma standardowego nazewnictwa kluczy
-
Język programowania do parsowania JSON
- Python-snake_case
- PHP-snake_case
- Java-camelCase
- JavaScript-camelCase
Mix-dopasuj komponenty
- Python "JSON" Python - snake_case
- Python "JSON" PHP - snake_case
- Python "JSON" Java - snake_case lub camelCase
- Python "JSON" JavaScript - snake_case będzie miało sens; wkręć front-end tak czy inaczej
- Python "JSON" nie wiesz - snake_case będzie miało sens; wkręć parser tak czy inaczej
- PHP "JSON" Python - snake_case
- PHP " JSON " PHP - snake_case
- PHP "JSON" Java - snake_case lub camelCase
- PHP "JSON" JavaScript - snake_case będzie miało sens; wkręć front-end tak czy inaczej
- PHP "JSON" PHP - snake_case
- PHP "JSON" nie wiesz - snake_case będzie miało sens; wkręć parser tak czy inaczej
- Java " JSON "Python - camelCase lub snake_case
- Java "JSON" PHP - camelCase lub snake_case
- Java "JSON" Java - camelCase
- Java "JSON" JavaScript - camelCase
- Java "JSON" nie wiesz - camelCase będzie miało sens; wkręć parser tak czy inaczej
- JavaScript " JSON " Python - snake_case będzie miało sens; wkręć front-end tak czy inaczej
- JavaScript "JSON" PHP - snake_case będzie miało sens; wkręć front-end tak czy inaczej
- JavaScript "JSON" Java - camelCase
- JavaScript "JSON" JavaScript - camelCase
Niektóre rzeczywiste implementacje
- Google Maps JavaScript API - camelCased
- Facebook JavaScript API - snake_cased
- Amazon Web Services - snake_cased & camelCased
- Twitter API - snake_cased
- JSON-LD - camelCased & ProperCamelCased
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ć.
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.
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
.
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
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:
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.
-
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 }
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