无法使用marshm加载UTF8 JSON数据

2024-05-14 15:00:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用棉花糖来验证发布到我的应用程序的JSON数据。我用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应用程序,其模式如下:

^{pr2}$

还有一个处理程序,比如:

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" }')

它工作得很好,但我不想发布unicode,我想使用UTF-8。如何让它获取UTF-8发布的数据并加载它?在


Tags: 数据selfjson应用程序dataschematypeload

热门问题