PythonでもJSON

Python でもJSONを使いたい! ということで, 探してみた. こんなページを見つけた. やっぱり山のようにある. どれでもいいから, 標準ライブラリに取り込んでもらいたいものだ.

どれを使っても同じみたいな感じなので, ランダムにjson-pyを選んで見た. なかを見てみると, json と minson という全く別の2つのパッケージが入っているようだ. とりあえず, json を使うとこんな感じだ.

import json
# Python オブジェクトから JSON文字列へ
print json.write( python_object )

# JSON 文字列 を Python オブジェクトへ
python_object = json.read( json_string )

Pythonオブジェクトといっても, 数値, 文字列, 真偽値, リスト, マッピングオブジェクトしか使えない. マッピングオブジェクトのキーは文字列でなければならないが, これはJSONのオブジェクトのキーは文字列でなければならないため. でも実際に数値をキーにして試してみたら動いてしまった. これは多分バグ.

>>> json.write({1:1})
'{1:1}'

JavaJSON-libのように, いわゆるオブジェクトからマッピングできるようになっているとうれしかったのだが.

> class a:
     __init__(self):
	 self.x = 1
	 self.y = '2'
> a0 = a()
> json.write(a0)
'{x:1, y:"2"}

> json.read(a0, '{x:3, y:"test"})
> a0.x
3
> a0.y
"test"

とかいう感じで. 読み込む方は型情報が無いから大変かもしれないが,書き出すほうは割に簡単なのではないだろうか.