Как десериализовать пустой массив / список? - PullRequest
5 голосов
/ 25 августа 2011

У меня есть собственность

@JsonProperty
private Map<String, String> parameters = new HashMap<String, String>();

Когда я пытаюсь десериализовать, вызывая objectMapper.readValue (...), все работает нормально, пока поле параметров в JSON не станет пустым, т. Е.

"parameters":[]

Я получаю это исключение ...

org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.HashMap out of START_ARRAY token

Как мне обработать пустой список? И нет, я не имею никакого контроля над входящим JSON.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 25 августа 2011

Вы можете получить только HashMap из {}, но не [] (хотя вы можете получить ArrayList из него).

0 голосов
/ 26 августа 2011

Как упоминал Крис, ваш JSON неверен.

Но если вам действительно нужно это поддерживать, вы можете (и должны) создать собственный десериализатор и зарегистрировать его для объявленного типа карты - пользовательский десериализатор может принимать массивы (по крайней мере, пустые, если это только виды). что можно встретить).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...