GoogleAppEngineで、クライアントにJSONでデータ返そうとして import json とかやったら使えなかった…orz
まあ当たり前で、GoogleAppEngineのPythonは2.5ベースなのでJSONサポートが組み込まれてないのですな。組み込まれるのは2.6以降だったね。すっかり2.6に慣れててすっかり忘れてたよ。
ということで代替案を考えたところ、GoogleAppEngineには最初からDjangoが入ってるからsimplejson使えるんじゃね、と思ってサンプルコード書いてみた。
# -*- coding: utf-8 -*-
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from django.utils import simplejson
class MainPage(webapp.RequestHandler):
def get(self):
test_data = {
"data1": u"日本語",
"data2": "ascii",
"data3": u"長い文字列を入れてみたいと思いましたが力尽きました。",
"data4": u"テストデータ作るのもめんどくさいですね",
"data5": {
"subdata1": u"入れ子データ1",
"subdata2": u"入れ子データ2",
},
}
self.response.headers['Content-Type'] = 'application/json; charset=utf-8'
self.response.out.write(simplejson.dumps(test_data,
ensure_ascii=False,
sort_keys=True))
application = webapp.WSGIApplication(
[('/', MainPage)],
debug=True)
def main():
run_wsgi_app(application)
if __name__ == "__main__":
main()
出力結果はこんな感じ。
{"data1": "日本語", "data2": "ascii", "data3": "長い文字列を入れてみたいと思いましたが力尽きました。", "data4": "テストデータ作るのもめんどくさいですね", "data5": {"subdata1": "入れ子データ1", "subdata2": "入れ子データ2"}}
見事にビンゴでしたとさ。