JSONパース後のfor inにおけるブラウザ毎の挙動の違い

超ハマったのでメモ。

PHPで作られた配列。キーが降順なことに注目

<?php
Array
(
    [2] => c
    [1] => b
    [0] => a
)

PHPjson_encode()で配列をJSON

{"2":"c","1":"b","0":"a"}

JavaScriptJSONをパースし、for inで回してキーをalert

var json = eval({"2":"c","1":"b","0":"a"});

for(var key in json)
{
	alert(key);
}

alert時のブラウザ毎の挙動の違い

  • chrome5
    • 0→1→2
  • FIrefox3
    • 2→1→0
  • IE7
    • 2→1→0

chromeはおせっかいにもキーを昇順ソートしやがる。
迷惑。超迷惑。
safariは知りません。