2012-04-23 3 views

답변

19

JSONP은 JavaScript 함수 호출로 싸인 JSON입니다. 예를 들면 다음과 같습니다 :

callback({"status":"success", "someVar":1}); 

그래서 몇 가지 옵션이 있습니다. WebView을 사용하는 경우 JavaScript에서 callback이라는 함수를 정의한 다음 JSONP 데이터에 eval()을 호출하면됩니다. 그러면 callback 함수가 호출되어 파싱 된 JSON 객체가 전달됩니다 (eval()이 구문 분석을 수행함).

또는 당신이 당신의 자바 코드에서 JSONP 문자열이있는 경우, 가장 간단한 옵션처럼 JSON의 문자열을 추출하는 아마 : 단지 당신을 떠나, callback();을 제거합니다

String json = jsonp.substring(jsonp.indexOf("(") + 1, jsonp.lastIndexOf(")")); 

{"status":"success", "someVar":1}으로 변환 한 다음 표준 JSON 파서로 구문 분석해야합니다.

+0

웹 페이지를 사용하고 있지 않습니다. iam이 로그인 목적으로 사용하고 있습니다. respone이 null이 아닌 경우 사용자가 다음 화면으로 이동하면 json 파서를 사용하여 구문 분석 오류가 발생합니다. – wolverine

+0

예, 위의 두 번째 예제를'substring()'호출과 함께 사용하십시오. 그렇다면'JSONValue.parse (json)'또는 JSON 구문 분석기가 무엇이든지 상관 없습니다. Runnable 예 : http://ideone.com/5v3z6 – aroth

+0

미안 ..이 주제에 익숙하지 않다. JSON 파서로 파싱 할 때 null이 표시되므로 어떻게 할 수 있습니까? 제발 완전한 코드를 게시하시기 바랍니다 .. – wolverine

관련 문제