今JSONの仕様書を読んでるのですが、
IEEE 754で定義されている Infinity
や NaN
はJSONでは表現できず、
例えば
JSON.stringify(Infinity) // => "null"
JSON.parse("Infinity") // => エラー
となるのですが、仕様をよく読むと数値の表現範囲は実装に依るということで、
1E400
などの大きい数値は正確に表現できない代わりに適宜丸めたりされるようです。
実際Chromeで動かして Infinity
になることが確認されました。
JSON.parse("1E400") // => Infinity
なので、JSONでどうしても Infinity
を表したいときは、JSONを扱う処理系に合わせて
馬鹿でかい数を入れることによって一応は表現できることになります。
ただ、このような手法で NaN
を表現する方法は思いつきませんでした。
なお、もう1つIEEE 754で定義されている -0
は表現できるみたいです。
JSON.parse("-0") // => -0