2010-10-15 58 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) %>; 

你,如果你避免疯狂的路径时保存自己的短期和长期来看。