JSONのデータを作成する
イデオムレベルのコードだけど、Python初心者のメモです。
from django.utils import simplejson data = simplejson.dumps( [dict(id=entity.id, name=entity.name, description=entity.description) for entity in Entity.objects.filter(revision=0)] , ensure_ascii=False)
- simplejsonはJSONへのエンコード/デコードを行う
- 柔軟に出力するため、ディクショナリ(辞書)を作成し、その配列をJSON化(単体でもOK)
- 組込関数dictはディクショナリ(辞書)を作成する(名前付変数を使うのがミソ)
- 非Asciiを出力する場合は、ensure_ascii=Falseを指定
Java脳だとこんなスッキリと綺麗なコードは書けません。無理に1ラインで書く必要はないけど、Pythonっぽさが出ているコードじゃないのかな。
クックブックによれば、4.11 引用符におぼれずにディクショナリ構築となっています。dict()の部分を抽出して比較すると、こんな感じ。
dict(id=entity.id, name=entity.name, description=entity.description) {'id'=entity.id, 'name'=entity.name, 'description'=entity.description}
この引用符がウザイってのがクックブックの言い分。これ、どうなんだろ。まだ、自分はPython脳にはなっていないけど、確かにウザイ・・・のかねぇ?
あと、中括弧を書かないで済むぜ!っても書いてある。これも、どうなんだろ(笑)
Rubyだとシンボルがあるから便利なんだけどね。