Ist es eine schlechte Praxis, Bindestriche in JSON-Schlüsseln zu verwenden?

12

Ich sehe viele Fragen, die sich mit dem Zugriff auf JSON-Schlüssel befassen, die Bindestriche verwenden (Kebab-Fall), aber jetzt frage ich mich, ob ich mich nur an camelCase oder snake_case in meinen Schlüsseln halten soll. Ich weiß, dass Bindestriche auch komplizierte Zuordnungen erstellen können, wenn sie zwischen Sprachen portiert werden. Ich habe gesehen, dass einige JSON-Deserialisierungsbibliotheken diese Schlüssel in einen camelCase-Stil konvertieren.

Beispiel:

var something = {
  "some-value": 'thing'
}

Vs

var something = {
  "someValue": 'thing',
  "some_other_value": 'thing_two'
}
Matt Oaxaca
quelle
4
REST hat nichts zu Nutzlastformaten zu sagen.
Eric Stein
2
Warum verwenden Sie Kebab-Case in JSON? Normalerweise wird camelCase für JSON verwendet, da es immer empfehlenswert ist, die Namenskonventionen der Programmierumgebung zu befolgen, und es üblich ist, camelCase für Variablen in JavaScript zu verwenden. Ich gehe jedoch davon aus, dass Sie JSON für die Kommunikation mit JavaScript verwenden.
Alternatex
1
Ich sehe, dass die Frage mit Javascript markiert ist, aber die Frage selbst scheint sich auf eine API zwischen verschiedenen Sprachen / Bibliotheken zu beziehen. Wenn Sie sich mit Javascript beschäftigen, beachten Sie, dass die Punktnotation bei Bindestrichen nicht funktioniert.
Izkata
5
Dies ist keine schlechte Vorgehensweise, da JSON sprachunabhängig ist und daher nicht durch die Syntax einer bestimmten Sprache eingeschränkt werden sollte. Es ist jedoch sinnvoll, nur alphanumerische Zeichen zu verwenden, da dies Bezeichnern in allen gängigen Sprachen direkt zugeordnet werden kann, sodass dies nur zu den geringsten Zuordnungsproblemen führt.
JacquesB
1
@Alternatex: +1 für "Kebab-Fall" :-)
gnasher729

Antworten:

13

Sie können alles als JSON-Schlüssel verwenden, solange es UTF-8 gültig ist, keine Nullcodepunkte enthält, und es wäre nützlich, wenn Sie den Schlüssel als Zeichenfolge in der Programmiersprache Ihrer Wahl darstellen könnten. Ich könnte empfehlen, keine unterschiedlichen Unicode-Darstellungen derselben Zeichenfolge zu verwenden (z. B. "Ä", geschrieben als ein oder zwei Codepunkte).

Lesen einiger Kommentare: Es scheint, dass einige Leute versuchen, Klassen mit Instanzvariablen zu erstellen, die mit den Schlüsseln in JSON-Wörterbüchern übereinstimmen. Was natürlich nicht funktioniert, wenn Ihr Schlüssel "irgendein Wert" ist, es sei denn, Sie schreiben COBOL. Ich denke, das ist falsch. Ich habe Modellklassen, die so gestaltet sind, wie ich sie möchte. JSON wird nur zum Füllen der Modellklassen verwendet. Ich werde alles, was die Server-Leute für die Schlüssel verwendet haben, in meine Modellobjekte einfügen.

gnasher729
quelle
1
Sie stellen dringend die Frage, wie Ihr konsumierendes Programm auf die JSON-Schlüssel zugreift. In der Regel wird dazu der JSON als Objekt analysiert. Die Verwendung von Hypens oder anderen Zeichen, die dies verhindern, macht Ihren Verbrauchern das Leben schwer
Ewan
Und das ist gültig: {"❓": "✅"}
Vinicius Brasil
1
Wie verhindern Bindestriche etwas? Ich bekomme ein Wörterbuch und kann "some-key" als Schlüssel verwenden, ich kann sogar "❓" als Schlüssel verwenden.
Gnasher729
8

Es gibt viele JSON-Serialisierungssysteme, die die Zuordnung zwischen Feldnamen, die nicht für die Verwendung in der Sprache geeignet sind, in die sie integriert sind, mehr als verarbeiten können. In den meisten Fällen sind sie nicht schwer zu bedienen und erfordern nur wenig zusätzlichen Aufwand. In einer idealen Welt müssten Sie das nicht tun, aber wenn Ihre API bereits Bindestriche verwendet, wäre eine Änderung schlimmer als die Krankheit. Beachten Sie auch, dass die Verwendung von Bindestrichen in bestimmten Sprachen am häufigsten vorkommt, insbesondere in LISP-basierten Sprachen. Daher gibt es wahrscheinlich eine stille Minderheit der Konsumenten Ihrer API, die Bindestriche anstelle eines anderen Formats gerne sehen.

Jules
quelle
Ich werde so schnell wie möglich abstimmen. Ich habe Einsicht darin gefunden. Danke.
Matt Oaxaca
1

Nachdem ich einige Zeit in der Industrie verbracht und einige Systeme bearbeitet hatte. Ich glaube nicht, dass es eine bewährte Methode oder ein geeignetes Gehäuse für JSON-Schlüssel gibt. Der wichtigste Aspekt jeder Formatierung (Gehäuse / Codestil / usw.) ist die Konsistenz und Teamakzeptanz.

Wenn die Codebasis fragmentiert und inkonsistent ist, treffen Sie sich als Team und vereinbaren Sie einen einheitlichen Stil. Dann überwachen Sie die Formatierung gemeinsam.

Matt Oaxaca
quelle