JSONはこれらをすべて同じように扱いますか?それとも、整数とブール値が混在していますか?
var data =
{
"zero" : 0,
"one" : 1,
"false" : 0,
"true" : 1,
"0" : false,
"1" : true
}
JSONは、データを転送するための形式です。
平等の概念はありません。
JSON パーサーブール値と数値を個別のタイプとして扱います。
true
とfalse
の値は実際のブール値であり、残りは整数です。詳細については、 http://json.org/ を参照してください。
0/1は1バイトのみを消費し、true/falseは4/5バイトを消費するため、true/falseではなく0/1を使用することを好みます。
前述のように、JSONレベルでは、0とfalseは同じではありません。データ型は、数値とブール値です。ただし、JSON処理ライブラリは変換を選択できます。特に、たとえばネイティブのブール型を持たない言語/プラットフォームでは。その場合、別の表現を使用できます(空の文字列またはfalseの場合は0)。
さらに、処理ライブラリが型を強制することもできます。ブール値が予想される場合、代わりに特定の数値/文字列値(またはJSON 'null'トークン)を受け入れることができます。これは、異なる言語でのデータ型の選択の違いにより、かなり一般的です。