2015-10-27 7 views
0

Я пытаюсь вызвать URL-адрес, который принимает к списку.Плохое десериализованное с jackson

отправляемые данные

{"contactAvailableIdList":["1"],"contactIdList":["2","3"]} 


Method on the server 
@RequestMapping(value = "/lodgers/{lodgerId}/associate/dissociate/contact", method = RequestMethod.PUT) 
public void associateLodgerAndContact(@PathVariable("lodgerId") Long lodgerId, @RequestBody @Valid final List<Long> contactIdList, @RequestBody @Valid final List<Long> contactAvailableIdList) { 
    lodgerService.associateDissociateLodgerAndContact(lodgerId, contactIdList, contactAvailableIdList); 
} 

"{" метка ": 1445958336633," статус ": 400," ошибка ":" Bad Request " "исключение":" org.springframework.http .converter.HttpMessageNotReadableException "," message ":" Could Не прочитанный документ: невозможно десериализовать экземпляр java.util.ArrayList из токена START_OBJECT \ n в [Источник: [email protected]; строка: 1, столбец: 1]; inested exception is com.fasterxml.jackson.databind.JsonMappingException: Может не десериализовать экземпляр java.util.ArrayList из START_OBJECT token \ n в [Источник: [email protected]; линия: 1, колонка: 1] " "путь": "/ отдых/квартиранты/1/адъюнкт/диссоциируют/контакт"}"

ответ

2

Ну, я не уверен, если вы можете принять больше requestbodies на один раз.

Стандартный путь будет иметь класс

public class Contact{ 
    List<Long> contactIdList; 
    List<Long> contactAvailableIdList; 
} 

А затем принять его как

@RequestBody @Valid Contact contact 

Кроме того, вы получаете массив строки, и вы пытаетесь сохранить их в массиве Лонг. Я тоже не уверен, если Джексон неявно пытается преобразовать строковые элементы массива в длину в таком случае.

+0

я изменил использовать класс, но два списка является пустым Списком –

+0

Try вместо списка libik

+0

Джексон сделает принуждение из JSON строки в целые числа, если и по мере необходимости, если явно не предотвращена настройкой конфигурации. – StaxMan