Невозможно загрузить данные в формате USON UTF-8 с маршмеллоу - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь использовать зефир для проверки опубликованных данных 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);}
});

На стороне сервера у меня есть приложение python в Google App Engine со схемой, подобной:

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

Работает просто отлично, но я не хочу публиковать юникод, я хочу использовать UTF-8.Как я могу заставить его взять опубликованные данные UTF-8 и загрузить их?

1 Ответ

0 голосов
/ 27 мая 2019

Отсутствует s!

Для загрузки JSON в зефире вам нужно использовать функцию .loads (), а не функцию .load ().

Спасибо за все ваши усилияпомочь!

...