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.
Я не использую webview, я использую это для целей входа, поэтому я сделал это, если respone не является нулевым, тогда пользователь переходит на следующий экран, я использовал json parser, поэтому я получаю ошибку синтаксического анализа. вы можете дать мне пример, чтобы сделать это .. – wolverine
Да, используйте второй пример выше, тот, который содержит вызовы 'substring()'. Затем просто сделайте 'JSONValue.parse (json)' или какой бы ни был ваш эквивалент парсера JSON. Runnable example: http://ideone.com/5v3z6 – aroth
извините .. я новичок в этой теме .. когда я разбираюсь с парсером JSON, он показывает нуль, так как я могу это сделать? может у вас, пожалуйста, напишите мне полный код .. – wolverine