2013-07-18 385 views
0

這是我的java代碼來從服務器獲取響應。如何將json對象轉換爲java

try 

    { 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpResponse response; 
     HttpPost httppost = new HttpPost("http://www.def.net/my_script.php"); 

     response = httpclient.execute(httppost); 
     HttpEntity entity = response.getEntity(); 
     String s = EntityUtils.toString(entity); 

     JSONObject json = (JSONObject)new JSONParser().parse(s); 
     System.out.println("News title= " + json.get("news_title")); 
     System.out.println("Content= " + json.get("news_content")); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 

這是什麼PHP腳本返回。

{ "desktop_app_newsfeed": 
[ 
{ "news_id": "132", 
    "news_title": "test1", 
    "news_content": "Lorem ipsum dolor sit amet Donec...", 
    "news_date": "2013-07-18 10:38:20" }, 

{ "news_id": "1", 
    "news_title": "Hello world!", 
    "news_content":"Lorem ipsum dolor sit amet Donec...", 
    "news_date": "2013-04-22 17:54:05" 
} 
] 
} 

迭代得到如何分配給java中的變量。

+0

您正在使用哪個JSON實現庫? – zsawyer

+0

簡單的json對象庫。 – belekka

+0

如果您的意思是JSON-simple - **您不清楚** - 解碼示例位於http://code.google.com/p/json-simple/wiki/DecodingExamples。你的代碼提到JSONObject,我認爲它可能在不同的庫中。您的Java代碼是否高於實際代碼,是否會進行編譯?如果是,它的功能是什麼? –

回答

0

既然你知道你可以簡單地施展着離開Object S的像這樣的結構:

JSONObject json = (JSONObject) new JSONParser().parse(jsonString); 
JSONArray feed = (JSONArray) json.get("desktop_app_newsfeed"); 

for (Object item : feed) { 
    JSONObject news = (JSONObject) item; 

    System.out.println("News title= " + news.get("news_title")); 
    System.out.println("Content= " + news.get("news_content")); 
} 

如果您不確定結構的話,建議使用調試器和檢查什麼的json變量。

如果您正在尋找一種更通用和更強大的方法,您將不得不看看托馬斯W在其中一個評論中指出的文檔。

+0

我把它修好了,非常感謝你的幫助。 – belekka