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

@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.

Спасибо.

5
TedTrippin 25 Авг 2011 в 16:42

2 ответа

Лучший ответ

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

4
Chris Jester-Young 25 Авг 2011 в 13:11

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

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

0
StaxMan 26 Авг 2011 в 04:37