无法使用棉花糖加载 UTF-8 JSON 数据

Unable to load UTF-8 JSON data with marshmallow

我正在尝试使用 marshmallow 验证 posted JSON 数据到我的应用程序。我 post 像这样使用 Jquery:

var testdata = { "field1": "value1", "field2": "value2" };

$.ajax({
    type: "POST",
    url: "/api/v1/monitors",
    data: JSON.stringify(testdata),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(data){alert(data);},
    failure: function(errMsg){alert(errMsg);}
});

在服务器端,我在 Google App Engine 上有一个 python 应用程序,其架构如下:

class TestSchema(Schema):
    field1 = fields.Str()
    field2 = fields.Str()

还有像这样的处理程序:

def post(self):
    schema = TestSchema()
    result = schema.load(self.request.body)
    logging.error(result)

在日志中我不断得到:

UnmarshalResult(data={}, errors={u'_schema': [u'Invalid input type.']})

但是如果我替换这一行:

result = schema.load(self.request.body)

有了这个:

result = schema.load('{ "field1": u"value1", "field2": u"value2" }')

它工作得很好,但我不想 post unicode 我想使用 UTF-8。我怎样才能让它获取 UTF-8 posted 数据并加载它?

少了一个s!

棉花糖中的负载 JSON 您需要使用 .loads() 而不是 .load() 函数。

感谢您的帮助!