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だとシンボルがあるから便利なんだけどね。