この変換テーブルによると、JSON モジュールを使用してシリアライズすると、Python の int は JSON の数値として書き込まれます。
整数キーと整数値を持つ辞書があります。
>>> d = {1:2}
>>> type(d.items()[0][0])
<type 'int'>
>>> type(d.items()[0][1])
<type 'int'>
json モジュールを使用してこれを JSON 文字列にシリアル化すると、値は数値として書き込まれますが、キーは文字列として書き込まれます。
>>> json.dumps(d)
'{"1": 2}'
これは私が望む動作ではなく、json.dumps/json.loads のラウンドトリップが壊れているため、特に壊れているようです。
>>> d == json.loads(json.dumps(d))
False
なぜこれが起こるのですか? キーを数値として強制的に書き込む方法はありますか?