Я читаю ответ JSON от Mandrill API Mailchimp с Джексоном. Ответ немного необычен для ответа API в том смысле, что он включает в себя рули внутри квадратных скобок - список объектов. Другие обсуждения переполнения стека вокруг этой ошибки относятся к ответам API, которых нет в списке.
[
{
"email": "gideongrossman@gmail.com",
"status": "sent",
"_id": "6c6afbd3702f4fdea8de690c284f5898",
"reject_reason": null
}
]
Я получаю эту ошибку ...
2019-07-06 22:41:47.916 DESKTOP-2AB6RK0 org.groundlist.core.RestClient 131222 ERROR com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `org.groundlist.core.user.MandrillWrapper$TemplatedEmailResponse` out of START_ARRAY token
Как правильно определить этот объект ответа?
Я попытался определить ответ следующими типами. Никто не работал.
public static class TemplatedEmailResponse {
public LinkedHashMap<String, String>[] response;
}
public static class TemplatedEmailResponse {
public ArrayList<LinkedHashMap<String, String>> response;
}
@ milchalk ... Как именно я могу использовать ваше предложение объектного сопоставления с тем, как я сейчас вызываю API и обрабатываю ответ?
TemplatedEmailResponseList ret = getClient("messages/send-template.json").post(mandrillPayload,
TemplatedEmailResponseList.class);
, где
public <T> T post(Object payload, Class<T> responseType) {
try {
Entity<Object> entity = Entity.entity(payload, MediaType.APPLICATION_JSON);
T t = client.target(url).request(MediaType.APPLICATION_JSON).post(entity, responseType);
return t;
} catch (Throwable t) {
logError(t);
throw t;
} finally {
client.close();
}
}