Пошел по различным вопросам, похожим на это, но, похоже, я все делаю хорошо и все еще получаю ошибку при интерпретации объекта на сервере ... Должно быть, что-то не хватает. :)Ошибка Джексона при отправке нескольких объектов с помощью jQuery AJAX
Основы: (1) на стороне клиента - JQuery (2) на стороне сервера - Spring + Джексон
Я заинтересован в отправке объекта и логическое в теле запроса PUT. Объект построен так:
templateRequest: {
template: template,
deviceIds: deviceIds
}
где template
является объектом сам и deviceIds
представляет собой массив целых чисел. Дополнительным логическим называется shouldCheck
.
Клиент отправляет данные следующим образом:
$.ajax({
url: /* the REST service url */,
type: 'PUT',
dataType: 'application/json; charset=utf-8',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({
templateRequest: {
template: template,
deviceIds: deviceIds
},
shouldCheck: shouldCheck
}),
complete: /* the callback function */
});
Сервер ожидает, что это:
@RequestMapping(value = /* the required URL */, method = RequestMethod.PUT, headers = "Accept=*/*")
@ResponseBody public boolean updateTemplate(
@RequestBody TemplateRequest templateRequest,
@RequestBody Boolean shouldCheck) {
/* redacted */
}
с TemplateRequest
существа:
public class TemplateRequest {
private AuthenticationTemplate template;
private int[] deviceIds;
/* redacted */
}
Ну, до сих пор так хорошо (или так кажется). Однако, когда я на самом деле запустить эту вещь, я получаю следующее сообщение об ошибке:
{"General Error":"Unrecognized field \"templateRequest\" (Class
/* TemplateRequest fully qualified name */), not marked as ignorable\n at
[Source: [email protected]; line: 1, column: 21]
(through reference chain: /* TemplateRequest fully qualified name */[\"templateRequest\"])"}
Кажется, я посылаю объекты неправильно. Любые предложения, как это исправить?
Большое спасибо!
Я не думаю, что у вас может быть два '@ RequestBody' –
Хммм. Жизнь не так проста, вы имеете в виду? :) Попробует переместить логическое значение в url. – st2rseeker