1. ホーム
  2. json

[解決済み] JSONオブジェクトに末尾のカンマを使用することは可能ですか?

2022-03-24 09:54:58

質問

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

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

のような文字列を与えます。

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

これは許されるのか?

解決方法は?

残念ながら 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に構造体を出力するときに使う別の方法は、各項目の後に常にカンマを付けて(上でやっているように)、最後にカンマを付けないダミー項目を追加することです(でもこれは単なる怠慢です ;>))。

残念ながら、配列ではうまくいきません。