Ответ 1
JSONP - это просто JSON, завернутый в вызов функции JavaScript. Например, что-то вроде:
callback({"status":"success", "someVar":1});
Итак, у вас есть несколько вариантов. Если вы используете WebView
, вы можете определить функцию с именем callback
в JavaScript, а затем просто вызвать eval()
в данных JSONP. Это вызовет функцию callback
, передав ей проанализированный объект JSON (eval()
выполняет синтаксический анализ для вас).
Или, если у вас есть строка JSONP в вашем Java-коде, самым простым вариантом является извлечение подстроки JSON, например:
String json = jsonp.substring(jsonp.indexOf("(") + 1, jsonp.lastIndexOf(")"));
Это отключит callback(
и );
, оставив вас только с {"status":"success", "someVar":1}
, который затем должен разобрать с любым стандартным парсером JSON.