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"}}
見事にビンゴでしたとさ。