657 Stimmen

JSON-Namenskonvention (snake_case, camelCase oder PascalCase)

Gibt es einen Standard für die Benennung von JSON?
In den meisten Beispielen werden alle Kleinbuchstaben durch einen Unterstrich getrennt, auch bekannt als snake_case aber kann es verwendet werden PascalCase ou camelCase auch?

47 Stimmen

Ich war neugierig, was einige Branchenführer gewählt haben. Die APIs von Twitter und Facebook verwenden snake_case, während Microsoft und Google camelCase verwenden.

14 Stimmen

@Justin Das liegt daran, dass Twitter Ruby und Facebook PHP verwendet. Ruby und PHP sind in snake_case. Microsoft und Google verwenden C/.NET bzw. Java. Oh, das stimmt, .Net und Java stehen vielleicht auf camelCase. Es geht um die Konventionen der Programmiersprachen

3 Stimmen

Es gibt keinen Standard, aber es scheint üblich zu sein, den Standard der Technologie des Empfangssystems zu verwenden.

615voto

Tho Punkte 19990

In diesem Dokument Google JSON Style Guide (Empfehlungen für die Erstellung von JSON-APIs bei Google),

Sie empfiehlt dies:

  1. Eigenschaftsnamen müssen sein camelCased ASCII-Zeichenfolgen.

  2. Das erste Zeichen muss ein Buchstabe, ein Unterstrich (_) oder ein Dollarzeichen ($) sein.

Beispiel:

{
  "thisPropertyIsAnIdentifier": "identifier value"
}

Mein Team folgt bei der Erstellung von REST-APIs konsequent dieser Konvention. Dafür gibt es einige Gründe:

  • Erstens sollte die JSON-Konvention unabhängig von den Programmiersprachen sein, denn wir wollen, dass unsere APIs konsistent sind, unabhängig davon, ob es APIs gibt, die mit einer camelCase Sprache (z. B. Java), einige andere mit snake_case Sprache (z.B. Python).
  • Außerdem sind die meisten unserer Kunden Webanwendungen, so dass camelCase wird bevorzugt
  • Wenn der Kunde es vorzieht snake_case kann es dennoch problemlos Daten konvertieren zwischen snake_case y camelCase (mit Hilfe von Bibliotheken)

Ich stimme jedoch zu, dass, wenn alle Anwendungen die gleiche Art von Sprache verwenden (z. B. snake_case ), sollte auch die JSON-Konvention eingehalten werden.

3 Stimmen

Kann jemand erklären, warum und wann man einen Unterstrich als Präfix für einen Eigenschaftsnamen verwenden sollte? Eine Referenz wäre nützlich, nicht nur eine Meinung.

1 Stimmen

@SeanGlover, beim Erstellen von Javascript "Klassen", einige Leute Leute beginnen "private" Methoden/Eigenschaften mit einem Unterstrich. Ich finde, dass es in Vererbungsszenarien viel einfacher ist, eine Instanzmethode durch ein "_" als privat zu kennzeichnen, als ein komplexes System zur Erweiterung von Prototypen mit Schließungen zu verwenden, um das Verhalten von privaten Instanzmethoden der klassischen Vererbung nachzuahmen.

0 Stimmen

@Grant Ihr Beispiel ist nicht in camel Case richtig? { "ThisPropertyIsAnIdentifier": "Bezeichnerwert" }

442voto

Abel Callejo Punkte 11541

ECMA-404

Die JSON-Syntax enthält keine Einschränkungen für die als Namen verwendeten Zeichenfolgen,...

Es gibt keine Norm Benennung von Schlüsseln in JSON und dass camelCase o schlangen_koffer sollte gut funktionieren.

TL;DR

Hier ist ein Faustformel die wohl von den meisten Entwicklern verwendet wird.

Technologie-Stapel

Konvention zur Namensgebung

Grund/ Leitfaden

Python  " JSON "  Python

schlangen_koffer

Einstimmig

Python  " JSON "  PHP

schlangen_koffer

Einstimmig

Python  " JSON "  Java

snake_case oder camelCase

Legen Sie fest, wo sich die Geschäftslogik befindet. Nutzen Sie die Vorteile des extrinsischen Stils von Java.

Python  "JSON " Backend  JavaScript

snake_case oder camelCase

Legen Sie fest, wo sich die Geschäftslogik befindet.

Python  "JSON " Frontend  JavaScript

schlangen_koffer

Scheiß auf das Front-End

Python  " JSON "  Sie wissen nicht

schlangen_koffer

Scheiß auf den Parser

PHP  " JSON "  Python

schlangen_koffer

Einstimmig

PHP  " JSON "  PHP

schlangen_koffer

Einstimmig

PHP  " JSON "  Java

snake_case oder camelCase

Legen Sie fest, wo sich die Geschäftslogik befindet. Nutzen Sie die Vorteile des extrinsischen Stils von Java.

PHP  "JSON " Backend  JavaScript

snake_case oder camelCase

Legen Sie fest, wo sich die Geschäftslogik befindet.

PHP  "JSON " Frontend  JavaScript

schlangen_koffer

Scheiß auf das Front-End

PHP  " JSON "  Sie wissen nicht

schlangen_koffer

Scheiß auf den Parser

Java  " JSON "  Python

camelCase oder snake_case

Legen Sie fest, wo sich die Geschäftslogik befindet. Nutzen Sie die Vorteile des extrinsischen Stils von Java.

Java  " JSON "  PHP

camelCase oder snake_case

Legen Sie die Geschäftslogik dort ab, wo sie sich befindet. Nutzen Sie die Vorteile des extrinsischen Stils von Java.

Java  " JSON "  Java

camelCase

Einstimmig

Java  " JSON "  JavaScript

camelCase

Einstimmig

Java  " JSON "  Sie wissen nicht

camelCase

Scheiß auf den Parser

Backend  JavaScript  " JSON "  Python

camelCase oder snake_case

Legen Sie fest, wo sich die Geschäftslogik befindet.

Vorderseite  JavaScript  " JSON "  Python

schlangen_koffer

Scheiß auf das Front-End

Backend  JavaScript  " JSON "  PHP

camelCase oder snake_case

Legen Sie fest, wo sich die Geschäftslogik befindet.

Vorderseite  JavaScript  " JSON "  PHP

schlangen_koffer

Scheiß auf das Front-End

JavaScript  " JSON "  Java

camelCase

Einstimmig

JavaScript  " JSON "  JavaScript

camelCase

Original

JavaScript  " JSON "  Sie wissen nicht

camelCase

Scheiß auf den Parser

Treibende Faktoren

Die Festlegung einer Namenskonvention ist sehr verwirrend, da JSON allein keinen Standard vorschreibt. Dies kann jedoch leicht herausgefunden werden, wenn man es in Komponenten aufteilt.

JSON-Generator

Programmiersprache

Konvention zur Namensgebung

Python

schlangen_koffer

PHP

schlangen_koffer

Java

camelCase

JavaScript

camelCase

JSON-Parser

Programmiersprache

Konvention zur Namensgebung

Python

schlangen_koffer

PHP

schlangen_koffer

Java

camelCase

JavaScript

camelCase

Großteil der Geschäftslogik

Sie müssen entscheiden, welche Seite die schwerwiegendere Geschäftslogik hat, ist es die JSON-Generator Seite oder die JSON-Parser Seite?

Natürliche Zugehörigkeit

Programmiersprache

Natürliche Zugehörigkeit

Python

immanent

PHP

immanent

Java

Extrinsisch

JavaScript

immanent

Intrinsisch - Programmiersprache, in der auf JSON zugegriffen wird natürlich ähnlich zum Zugriff auf native Objekte und Arrays.

Extrinsisch - Programmiersprache, in der auf JSON zugegriffen wird anders als der Zugriff auf native Objekte und Arrays. Nachstehend ein Beispiel für Java 's com.google.gson Paket:

/**
 * Using a method to access a property instead of using the standard 'dot.syntax'
 */
JsonElement.getAsString("snake_cased_key");

Einige konkrete Umsetzungen

Schlussfolgerungen

Die Wahl der richtigen JSON-Benennungskonvention für Ihre JSON-Implementierung hängt von Ihrem Technologie-Stack ab. Es gibt Fälle, in denen Sie Folgendes verwenden können schlangen_koffer , camelCase oder eine andere Namenskonvention.

Eine weitere Überlegung ist die Gewichtung des JSON-Generators gegenüber dem JSON-Parser und/oder dem Front-End-JavaScript. Im Allgemeinen sollte der Geschäftslogik mehr Gewicht beigemessen werden.

Auch, wenn die JSON-Parser Seite unbekannt ist, dann können Sie deklarieren, was immer für Sie arbeiten kann.

9 Stimmen

"Person": ist nicht camelCase :)

1 Stimmen

@stoft das liegt wahrscheinlich daran, dass sie auch die Konvention von schema.org befolgt haben. Wenn man den Schlüssel mit einem Großbuchstaben beginnt, bedeutet das, dass es sich um eine Vokabular-Entität handelt. Beginnt der Schlüssel mit einem Kleinbuchstaben, bedeutet dies, dass es sich um eine Vokabulareigenschaft handelt.

0 Stimmen

Ty, ich hatte noch nie von diesem Übereinkommen gehört

354voto

StaxMan Punkte 107669

Es gibt keinen EINZIGEN Standard, aber ich habe die 3 von Ihnen genannten Stile gesehen ("Pascal/Microsoft", "Java" ( camelCase ) und "C" (Unterstriche, snake_case )) - sowie mindestens eine weitere, kebab-case wie longer-name ).

Es scheint vor allem davon abzuhängen, welchen Hintergrund die Entwickler des betreffenden Dienstes hatten; diejenigen mit C/C++-Hintergrund (oder Sprachen, die eine ähnliche Namensgebung verwenden, wozu viele Skriptsprachen, Ruby usw. gehören) wählen oft die Unterstrich-Variante; und der Rest ist ähnlich (Java vs. .NET). Die erwähnte Jackson-Bibliothek zum Beispiel übernimmt die Java-Bean-Namenskonvention ( 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 , die allesamt nicht "der" Standard sind. Einer von ihnen könnte als der Standard für eine bestimmte Plattform angesehen werden, aber da JSON für die Interoperabilität zwischen Plattformen verwendet wird, kann das viel Sinn machen oder auch nicht.

8 Stimmen

Es ist wichtig, sich an den Hintergrund der Entwickler zu halten, aber JSON hält sich an den Javascript-Standard. Ihre erste Aussage ist nicht ganz korrekt. Aber halten Sie sich auf jeden Fall an die Namenskonventionen Ihres Teams.

11 Stimmen

Es wäre interessant, einige Statistiken zu sehen, da es ständige Reibereien zwischen Leuten gibt, die behaupten, dass es eine Verbindung zwischen JSON und Javascript gibt (über das historische Erbe hinaus), und denen, die denken, dass es derzeit wenig gibt, was JSON mit Javascript verbindet. Ich gehöre zum letzteren Lager. Aber ich wäre daran interessiert, die relativen Nutzungsmuster zu kennen.

4 Stimmen

@StaxMan C# verwendet in den meisten Fällen PascalCase, nicht camelCase.

23voto

Clarence Liu Punkte 3806

Vor allem für mich auf NodeJS, wenn ich mit Datenbanken arbeiten und meine Feldnamen sind Unterstrich getrennt, ich verwende sie auch in der Struktur Schlüssel.

Der Grund dafür ist, dass Datenbankfelder viele Akronyme/Abkürzungen haben, so dass etwas wie appSNSInterfaceRRTest sieht ein bisschen unordentlich aus, aber app_sns_schnittstelle_rr_test ist schöner.

In Javascript sind Variablen alle camelCase und Klassennamen (Konstruktoren) sind ProperCase, so dass Sie etwas wie sehen würde

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

または

generalLedgerTask = new GeneralLedgerTask( devTask );

Und natürlich in JSON Schlüssel/Zeichenfolgen sind in Anführungszeichen eingewickelt, aber dann verwenden Sie einfach die JSON.stringify und übergeben in JS-Objekte, so brauchen nicht zu kümmern.

Ich kämpfte ein wenig damit, bis ich den goldenen Mittelweg zwischen JSON- und JS-Benennungskonventionen fand.

1 Stimmen

Auch hier. Empfangen von JSON mit snake_case auf Android-Client sieht unangenehm! Auch Datenbank unterscheidet nicht Gehäuse für die Spaltennamen, so snake_case scheint am besten für die Datenbank zu sein.

0 Stimmen

@mythicalcoder JSON in Java ist in seinem Kern nicht intrinsisch. Java verwendet nur externe Pakete zum Parsen von Java, z.B. org.json , gson . Das Abrufen von snake_case-Daten tut nicht so sehr weh... JSONObject.get('snake_case_key_here')

8voto

entropo Punkte 2424

Anscheinend gibt es so viele verschiedene Konventionen, dass die Leute sich Mühe geben, die Umstellung von allen Konventionen auf andere zu ermöglichen: http://www.cowtowncoder.com/blog/archives/cat_json.html

Insbesondere der erwähnte Jackson JSON-Parser bevorzugt bean_naming .

8 Stimmen

Kleine Korrektur: Jackson verwendet standardmäßig die Java-Bean-Namenskonvention, d.h. Camel Case (Kleinschreibung), wie beanNaming .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X