无法使用棉花糖加载 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() 函数。
感谢您的帮助!
我正在尝试使用 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() 函数。
感谢您的帮助!