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?

0voto

eddie Punkte 9

Ich führe eine aktuelle Zählung durch und vergleiche sie mit einer Gesamtzählung. Wenn der aktuelle Zählerstand kleiner ist als der Gesamtzählerstand, wird ein Komma angezeigt.

Dies funktioniert möglicherweise nicht, wenn Sie vor der Ausführung der JSON-Generierung keine Gesamtzahl haben.

Wenn Sie jedoch PHP 5.2.0 oder besser verwenden, können Sie Ihre Antwort mit der integrierten JSON-API formatieren.

0voto

dnshio Punkte 864

In der Vergangenheit habe ich die Erfahrung gemacht, dass verschiedene Browser mit nachgestellten Kommas in JSON unterschiedlich umgehen.

Sowohl Firefox als auch Chrome kommen damit gut zurecht. Aber IE (alle Versionen) scheint zu brechen. Ich meine wirklich brechen und aufhören, den Rest des Skripts zu lesen.

In Anbetracht dessen und der Tatsache, dass es immer gut ist, konformen Code zu schreiben, schlage ich vor, die zusätzliche Mühe auf sich zu nehmen, um sicherzustellen, dass es kein Komma am Ende gibt.

)

0voto

Da eine for-Schleife verwendet wird, um über ein Array oder eine ähnliche iterierbare Datenstruktur zu iterieren, können wir die Länge des Arrays wie gezeigt verwenden,

awk -v header="FirstName,LastName,DOB" '
  BEGIN {
    FS = ",";
    print("[");
    columns = split(header, column_names, ",");
  }
  { print("  {");
    for (i = 1; i < columns; i++) {
      printf("    \"%s\":\"%s\",\n", column_names[i], $(i));
    }
    printf("    \"%s\":\"%s\"\n", column_names[i], $(i));
    print("  }");
  }
  END { print("]"); } ' datafile.txt

Mit datafile.txt enthalten,

 Angela,Baker,2010-05-23
 Betty,Crockett,1990-12-07
 David,Done,2003-10-31

-1voto

Nils Punkte 12711

Normalerweise durchlaufe ich das Array in einer Schleife und füge nach jedem Eintrag in der Zeichenfolge ein Komma ein. Nach der Schleife lösche ich das letzte Komma wieder.

Vielleicht nicht der beste Weg, aber weniger kostspielig als jedes Mal zu prüfen, ob es das letzte Objekt in der Schleife ist, denke ich.

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