Gibt es einen Standard für die JSON-Benennung? Ich sehe die meisten Beispiele, bei denen alle Kleinbuchstaben durch Unterstriche (Kleinbuchstaben) getrennt sind. Aber können Sie PascalCase oder camelCase verwenden?
Gibt es einen Standard für die JSON-Benennung? Ich sehe die meisten Beispiele, bei denen alle Kleinbuchstaben durch Unterstriche (Kleinbuchstaben) getrennt sind. Aber können Sie PascalCase oder camelCase verwenden?
Antworten:
Es gibt keinen EINZELNEN Standard, aber ich habe 3 Stile gesehen, die Sie erwähnen ("Pascal / Microsoft", "Java" ( camelCase
) und "C" (Unterstriche snake_case
)) - sowie mindestens einen weiteren, kebab-case
wie longer-name
).
Es scheint hauptsächlich davon abzuhängen, welchen Hintergrund die Entwickler des betreffenden Dienstes hatten. Personen mit c / c ++ - Hintergrund (oder Sprachen mit ähnlichen Namen, einschließlich vieler Skriptsprachen, Ruby usw.) wählen häufig eine Unterstrichvariante. und ruhen Sie sich ähnlich aus (Java vs .NET). Die erwähnte Jackson-Bibliothek geht beispielsweise von einer Java-Bean-Namenskonvention aus ( camelCase
)
UPDATE: Meine Definition von "Standard" ist eine EINZIGE Konvention. Während man also behaupten könnte "Ja, es gibt viele Standards", gibt es für mich mehrere Naming Conventions
, von denen keiner insgesamt "Der" Standard ist. Eine davon könnte als Standard für eine bestimmte Plattform angesehen werden, da JSON jedoch für die Interoperabilität zwischen Plattformen verwendet wird, die möglicherweise wenig sinnvoll sind oder nicht.
In diesem Dokument Google JSON Style Guide (Empfehlungen zum Erstellen von JSON-APIs bei Google)
Es wird empfohlen, dass:
Eigenschaftsnamen müssen camelCased , ASCII-Zeichenfolgen sein.
Das erste Zeichen muss ein Buchstabe, ein Unterstrich (_) oder ein Dollarzeichen ($) sein.
Beispiel:
{
"thisPropertyIsAnIdentifier": "identifier value"
}
Mein Team folgt dieser Konvention.
Property Name Guidelines->Property Name Format->Choose meaningful property names.
.
In JSON gibt es keine Standardbenennung von Schlüsseln . Gemäß dem Abschnitt Objekte der Spezifikation:
Die JSON-Syntax legt keine Einschränkungen für die als Namen verwendeten Zeichenfolgen fest, ...
Was bedeutet, dass camelCase oder snake_case gut funktionieren sollten.
Das Auferlegen einer JSON-Namenskonvention ist sehr verwirrend. Dies kann jedoch leicht herausgefunden werden, wenn Sie es in Komponenten zerlegen.
Programmiersprache zum Generieren von JSON
JSON selbst hat keine Standardbenennung von Schlüsseln
Programmiersprache zum Parsen von JSON
snake_case ist für Benutzer mit Java-Einträgen weiterhin sinnvoll, da die vorhandenen JSON-Bibliotheken für Java nur Methoden für den Zugriff auf die Schlüssel verwenden, anstatt die Standard- dot.syntax zu verwenden . Dies bedeutet, dass es Java nicht so sehr schaden würde, auf die snake_cased- Schlüssel zuzugreifen , im Vergleich zu der anderen Programmiersprache, die die dot.syntax ausführen kann .
Beispiel für das Java- org.json
Paket
JsonObject.getString("snake_cased_key")
Beispiel für das Java- com.google.gson
Paket
JsonElement.getAsString("snake_cased_key")
Die Auswahl der richtigen JSON-Namenskonvention für Ihre JSON-Implementierung hängt von Ihrem Technologie-Stack ab. Es gibt Fälle, in denen man snake_case , camelCase oder eine andere Namenskonvention verwenden kann.
Eine andere zu berücksichtigende Sache ist die Gewichtung des JSON-Generators gegenüber dem JSON-Parser und / oder dem Front-End-JavaScript. Im Allgemeinen sollte mehr Gewicht auf die Seite des JSON-Generators als auf die Seite des JSON-Parsers gelegt werden. Dies liegt daran, dass sich die Geschäftslogik normalerweise auf der Seite des JSON-Generators befindet.
Wenn die JSON-Parser-Seite unbekannt ist, können Sie auch deklarieren, was für Sie jemals funktionieren kann.
"Person":
ist nicht camelCase :)
Insbesondere für mich auf NodeJS, wenn ich mit Datenbanken arbeite und meine Feldnamen durch Unterstriche getrennt sind, verwende ich sie auch in den Strukturschlüsseln.
Dies liegt daran, dass DB-Felder viele Akronyme / Abkürzungen haben, so dass so etwas wie appSNSInterfaceRRTest etwas chaotisch aussieht, aber app_sns_interface_rr_test schöner ist.
In Javascript sind Variablen alle camelCase und Klassennamen (Konstruktoren) ProperCase, so dass Sie so etwas sehen würden
var devTask = {
task_id: 120,
store_id: 2118,
task_name: 'generalLedger'
};
oder
generalLedgerTask = new GeneralLedgerTask( devTask );
Und natürlich werden in JSON Schlüssel / Zeichenfolgen in doppelte Anführungszeichen gesetzt, aber dann verwenden Sie einfach JSON.stringify und übergeben JS-Objekte, sodass Sie sich darüber keine Gedanken machen müssen.
Ich hatte ein wenig damit zu kämpfen, bis ich dieses glückliche Medium zwischen JSON- und JS-Namenskonventionen fand.
org.json
, gson
. Das Empfangen von snake_case-Daten tut nicht so weh ...JSONObject.get('snake_case_key_here')
Es scheint, dass es genügend Variationen gibt, die die Leute aus dem Weg räumen, um die Konvertierung von allen Konventionen in andere zu ermöglichen: http://www.cowtowncoder.com/blog/archives/cat_json.html
Insbesondere der erwähnte Jackson JSON-Parser bevorzugt bean_naming
.
beanNaming
.
Ich denke, dass es für JSON keine offizielle Namenskonvention gibt, aber Sie können einigen Branchenführern folgen, um zu sehen, wie es funktioniert.
Google, eines der größten IT-Unternehmen der Welt, verfügt über einen JSON-Styleguide: https://google.github.io/styleguide/jsoncstyleguide.xml
Weitere Vorteile, die Google definiert, finden Sie hier: https://github.com/google/styleguide
Wie andere angegeben haben, gibt es keinen Standard, daher sollten Sie selbst einen auswählen. Hier sind einige Dinge zu beachten:
Wenn Sie JavaScript verwenden, um JSON zu verwenden, bietet die Verwendung derselben Namenskonvention für Eigenschaften in beiden Fällen visuelle Konsistenz und möglicherweise einige Möglichkeiten für die Wiederverwendung von sauberem Code.
Ein kleiner Grund, Kebab-Fälle zu vermeiden, besteht darin, dass die Bindestriche visuell mit -
Zeichen kollidieren können , die in Werten erscheinen.
{
"bank-balance": -10
}