Наконец-то я смог удалить часть обратного вызова ответа JSONP.
Во-первых, Джексон может разбирать JSON, даже когда он заканчивается скобкой. Таким образом, просто удаляя my_json_callback(
из ответа достаточно.
Поскольку я использую HTTP Client Apache, это устраняет проблему:
String callback = "my_json_callback(";
InputStreamReader r = new InputStreamReader(response.getEntity().getContent());
r.skip(callback.length());
return mapper.readValue(r, MyObject.class);
Идея не имея преобразовать читателя в строку, а затем разбор этой строки после удаления обратного вызова часть.
Я также был в состоянии выполнить те же результаты, используя JSONTokener
из json.org
библиотеки для данной JSONP строки:
JSONTokener t = new JSONTokener(json);
t.nextValue(); // skip the callback
return mapper.readValue(t.nextValue().toString(), MyObject.class);
ну, я попробовал с пользовательским десериализатором, но исключение бросается до того, как сделан вызов метода десериализации. – Eldelshell