2010-04-01 6 views
0

JSON-ME를 사용하여 Twitter의 JSON 응답을 구문 분석하는 방법을 연구 중입니다. 예를 들어BlackBerry의 JSON 구문 분석 문제

: 여기

http://apiwiki.twitter.com/Twitter-Search-API-Method:-search 
foo({"results":[{"profile_image_url":"http://a3.twimg.com/profile_images/762620209/drama_queen-6989_normal.gif","created_at":"Thu, 01 Apr 2010 02:35:10 +0000","from_user":"TWEETSDRAMA","to_user_id":null,"text":"NEW Twitter Lists Widget - How to put it on your blog or site http://bit.ly/47NCi6","id":11401539152,"from_user_id":95081097,"geo":null,"iso_language_code":"en","source":"<a href="http://ping.fm/" rel="nofollow">Ping.fm</a>"}... (content truncated) 

내 방법입니다 :

public void parseDataFromJSON(String strjson) throws JSONException { 
JSONTokener jtoken = new JSONTokener(strjson); 
JSONArray jsoarray = new JSONArray(jtoken); 
JSONObject jsobj = jsoarray.getJSONObject(0); 

tweeter_profile_image_url = jsobj.optString("profile_image_url"); 
tweeter_created_at = jsobj.optString("created_at"); 
tweeter_from_user = jsobj.optString("from_user"); 
tweeter_to_user_id = jsobj.optString("to_user_id"); 
tweeter_text = jsobj.optString("text"); 
tweeter_id = jsobj.optInt("id"); 
tweeter_from_user_id = jsobj.optInt("from_user_id"); 
tweeter_geo = jsobj.optString("geo"); 
tweeter_iso_language_code = jsobj.optString("iso_language_code"); 
tweeter_source = jsobj.optString("source") 
} 

내가 에뮬레이터를 실행

는, 아무것도 표시되지, 그래서 내가 디버거를 검사, 출력했다 : 상태 : 200 content : { "results": [{ "profile_image_url": " http://a1.twimg.com/profile_images/746683548/Photo_on_2010- ..... ---> OK, JSON 콘텐츠가 있습니다.

org.json.me.JSONEx ception : JSONArray 텍스트는 { "results": {{ "profile_image_url .... --->의 문자 1에서 '['로 시작해야하지만 어떻게 든 제대로 처리 할 수 ​​없습니다.

이렇게 올바르게 구문 분석하는 방법은 무엇입니까?

답변

2

응답 자체가 목적이기 때문에, 당신은 단지 그것을 구문 분석이 필요합니다

JSONObject jsobj = new JSONObject(strjson); 

그것은 배열 자체가 단일 키, "결과"와 객체입니다. 그래서 당신은 같은 것을 할 거라고 :

JSONArray jsoarray = jsobj.getJSONArray("results"); 

는 그런 다음 "jsoarray"배열의 각 요소가 된 JSONObject, 등 등 당신은 다른 JSON 개체가 서로 중첩되는 방법을 볼 수있을 것이다 ...

+0

확인. 나는 아직도 혼란 스럽다. jsoarray에는 많은 요소 (JSONObjects)가 있습니다. 첫 번째 요소에 액세스하려고한다고 가정 해 봅시다. JSONObject foo = jsoarray.getJSONObject (0); foo는 키가 많이있다 : 나는 "profile_image_url는"이 어떤 값을 알고 싶습니다 등 profile_image_url, created_at, tweeter_id을, 그래서 나는이 작업을 수행 : 아직도 tweeter_profile_image_url = foo.getString ("profile_image_url") 을 그리고 충돌. 흠 ... – anta40

+0

JSONObject의 키가 존재하지 않을 가능성이있는 경우 getString 대신 optString을 사용하십시오. 그렇지 않으면 JSONException이 발생합니다. –

+0

방금 ​​시도 : tweeter_profile_image_url = foo.optString ("profile_image_url"); 그리고 여전히 충돌합니다. 하지만이 시도 : Dialog.inform ("foo.length() :"+ foo.length()); 메시지 상자에 올바른 11이라고 표시됩니다. – anta40