452 Stimmen

Kann man in einem JSON-Objekt ein nachgestelltes Komma verwenden?

Bei der manuellen Erstellung eines JSON-Objekts oder -Arrays ist es oft einfacher, ein Komma am letzten Element des Objekts oder Arrays stehen zu lassen. Der Code für die Ausgabe aus einem Array von Strings könnte zum Beispiel so aussehen (in einem C++-ähnlichen Pseudocode):

s.append("[");
for (i = 0; i < 5; ++i) {
    s.appendF("\"%d\",", i);
}
s.append("]");

Sie erhalten eine Zeichenkette wie

[0,1,2,3,4,5,]

Ist das erlaubt?

11voto

Rik Heywood Punkte 13598

PHP-Programmierer sollten sich folgende Seiten ansehen implode() . Dies nimmt ein Array und verbindet es mit einer Zeichenkette.

De la docs ...

$array = array('lastname', 'email', 'phone');
echo implode(",", $array); // lastname,email,phone

9voto

James Curran Punkte 98228

Interessanterweise erlauben sowohl C als auch C++ (und ich glaube, auch C#, aber ich bin mir nicht sicher) ausdrücklich das nachgestellte Komma - aus genau dem angegebenen Grund: Es macht die programmatische Erstellung von Listen viel einfacher. Ich bin mir nicht sicher, warum JavaScript nicht ihrem Beispiel gefolgt ist.

9voto

Roland Punkte 3869

Anstatt sich in einem Debattierclub zu engagieren, würde ich mich Defensive Programming und setzen beide Techniken ein:

  • Als Entwickler einer App, die erhält json-Daten, würde ich entspannt y ermöglichen das nachgestellte Komma.

  • Bei der Entwicklung einer App, die schreibt json, würde ich Streng und verwenden Sie eine der cleveren Techniken der anderen Antworten, um nur Kommas zwischen den Einträgen einzufügen und vermeiden das nachgestellte Komma.

Es gibt größere Probleme, die gelöst werden müssen...

6voto

user619271 Punkte 4526

Verwenden Sie JSON5. Verwenden Sie kein JSON.

  • Objekte und Arrays können nachgestellte Kommas haben
  • Objektschlüssel können nicht in Anführungszeichen gesetzt werden, wenn sie gültige Bezeichner sind.
  • Strings können in einfachen Anführungszeichen stehen
  • Strings können auf mehrere Zeilen aufgeteilt werden
  • Zahlen können hexadezimal sein (Basis 16)
  • Zahlen können mit einem (führenden oder abschließenden) Dezimalpunkt beginnen oder enden.
  • Zahlen können Unendlichkeit und -Unendlichkeit enthalten.
  • Zahlen können mit einem ausdrücklichen Pluszeichen (+) beginnen.
  • Sowohl Inline- (einzeilige) als auch Blockkommentare (mehrzeilige) sind zulässig.

http://json5.org/

https://github.com/aseemk/json5

3voto

Zhang Boyang Punkte 71

Es gibt eine Möglichkeit, eine if-Verzweigung in der Schleife zu vermeiden.

s.append("[ "); // there is a space after the left bracket
for (i = 0; i < 5; ++i) {
  s.appendF("\"%d\",", i); // always add comma
}
s.back() = ']'; // modify last comma (or the space) to right bracket

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