2010-10-15 39 views
0

您可能會在某些庫中自動執行此操作。但我是Java和JSON的新手,我需要一個快速的解決方案。使用JSP編寫JSON

我想從JSP文件中寫下(回顯)JSON。到目前爲止很好,但現在我有一個對象列表。所以我開始快速列舉。

現在的問題是:如何關閉與}]而不是,的JSON數組?通常我會在and中放入一個nill或null。

這裏是我的循環:使用Iterator代替

"rides":[{ 
<% 
List<Ride> rides = (List<Ride>)request.getAttribute("matchingRides"); 
      for (Ride ride : rides) { 
%>    
"ride":{  
    "rideId":"<%= String.valueOf(ride.getId()) %>", 
    "freeText":"<%= freeText %>" 
    },      

    <% 
    } 
    %> 
} ]  

回答

0

迭代。這樣,您可以在循環結束時檢查是否Iterator#hasNext()返回true,然後打印,

// Print start of array. 
Iterator<Ride> iter = rides.iterator(); 
while (iter.hasNext()) { 
    Ride ride = iter.next(); 
    // Print ride. 

    if (iter.hasNext()) { 
     // Print comma. 
    } 
} 
// Print end of array. 

無論如何,我強烈建議爲此使用JSON序列化程序,而不是像這樣擺弄低級別。我的最愛之一是Google Gson。只需下載並放置在/WEB-INF/lib的JAR。

request.setAttribute("matchingRides", new Gson().toJson(matchingRides)); 

和JSP以下:這樣你可以在servlet下面的最終

${matchingRides} 

或老式小腳本在你的問題:

<%= request.getAttribute("matchingRides") %> 
+0

謝謝,這是我希望的快速和骯髒的溶劑。下次我將嘗試GSON。 tnx也用於編輯... – Chrizzz 2010-10-15 17:54:54

+0

還行。李自成。這聽起來很簡單。我現在會嘗試。 Tnx再 – Chrizzz 2010-10-15 18:01:05

+0

不客氣。 – BalusC 2010-10-15 18:17:58

5

1.)在應用程序容器中下載並設置GSON
2)

GSON gson = new GSON(); 
<%= gson.toJson(rides) %>; 

你,如果你避免瘋狂的路徑時保存自己的短期和長期來看。