2012-04-23 5 views
13

Я пытаюсь разобрать ответ с сервера, и я новичок в этой теме, к сожалению, он находится в формате JSONP. Я не знаю, как разбирать формат JSONP, когда я пытался с JSON Parser возвращать значение null. Может ли кто-нибудь помочь мне в этом ...Есть ли способ конвертировать JSONP-формат в JSON?

Спасибо заранее.

ответ

19

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.

+0

Я не использую webview, я использую это для целей входа, поэтому я сделал это, если respone не является нулевым, тогда пользователь переходит на следующий экран, я использовал json parser, поэтому я получаю ошибку синтаксического анализа. вы можете дать мне пример, чтобы сделать это .. – wolverine

+0

Да, используйте второй пример выше, тот, который содержит вызовы 'substring()'. Затем просто сделайте 'JSONValue.parse (json)' или какой бы ни был ваш эквивалент парсера JSON. Runnable example: http://ideone.com/5v3z6 – aroth

+0

извините .. я новичок в этой теме .. когда я разбираюсь с парсером JSON, он показывает нуль, так как я могу это сделать? может у вас, пожалуйста, напишите мне полный код .. – wolverine

Смежные вопросы