辞書は2回JSONエンコードされているようです。これは、次と同等です。
json.dumps(json.dumps({ "color" : "color", "message" : "message" }))
おそらく、Pythonフレームワークは結果を自動的にJSONエンコードしますか?代わりにこれを試してください:
def returnJSON(color, message=None):
return { "color" : "color", "message" : "message" }
編集:
JSONを希望どおりに生成するカスタムPyramidレンダラーを使用するには、これを試してください(レンダラーのドキュメントとレンダラーのソースに基づいています)。
起動時:
from pyramid.config import Configurator
from pyramid.renderers import JSON
config = Configurator()
config.add_renderer('json_with_custom_default', JSON(default=json_util.default))
次に、使用する'json_with_custom_default'レンダラーがあります。
@view_config(route_name='CreateNewAccount', request_method='GET', renderer='json_with_custom_default')
編集2
Response
別のオプションは、レンダラーが変更してはならないオブジェクトを返すことです。例えば
from pyramid.response import Response
def returnJSON(color, message):
json_string = json.dumps({"color": color, "message": message}, default=json_util.default)
return Response(json_string)