JSON オブジェクトで末尾のコンマを使用できますか? 質問する

JSON オブジェクトで末尾のコンマを使用できますか? 質問する

JSON オブジェクトまたは配列を手動で生成する場合、オブジェクトまたは配列の最後の項目の末尾にコンマを残す方が簡単な場合がよくあります。たとえば、文字列の配列から出力するコードは次のようになります (C++ のような疑似コードの場合)。

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

次のような文字列が表示されます

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

これは許可されますか?

ベストアンサー1

残念ながらJSON仕様末尾のコンマは許可されません。許可するブラウザもいくつかありますが、一般的にはすべてのブラウザについて考慮する必要があります。

一般的に、私は問題を逆転させて、実際の値の前にコンマを追加します。その結果、次のようなコードになります。

s.append("[");
for (i = 0; i < 5; ++i) {
  if (i) s.append(","); // add the comma only if this isn't the first entry
  s.appendF("\"%d\"", i);
}
s.append("]");

for ループ内の 1 行のコードの追加は、それほどコストがかかりません...

何らかの形式の辞書から構造を JSON に出力するときに使用した別の方法は、各エントリの後に常にコンマを追加し (上記のように)、最後に末尾にコンマのないダミー エントリを追加することです (ただし、これは単なる怠惰です ;->)。

残念ながら配列ではうまく動作しません。

おすすめ記事