您可能会使用某个库自动执行此操作。但我是Java和JSON的新手,我需要快速解决。
我想要的是从JSP文件中写下(echo)JSON。到目前为止这么好,但现在我有一个对象列表。所以我开始快速枚举。
现在的问题是:如何使用}]
代替,
关闭JSON数组?通常我在和。中放一个nill或null。
这是我的循环:
"rides":[{
<%
List<Ride> rides = (List<Ride>)request.getAttribute("matchingRides");
for (Ride ride : rides) {
%>
"ride":{
"rideId":"<%= String.valueOf(ride.getId()) %>",
"freeText":"<%= freeText %>"
},
<%
}
%>
} ]
答案 0 :(得分:5)
1。)在您的应用程序容器中下载并设置GSON 2。)
GSON gson = new GSON();
<%= gson.toJson( rides ) %>;
如果你避开精神错乱的道路,你将在短期和长期内节省时间。
答案 1 :(得分:0)
使用Iterator
进行迭代。这样,您可以在循环结束时检查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即可。这样,您可以在servlet中得到以下结果:
request.setAttribute("matchingRides", new Gson().toJson(matchingRides));
以及JSP中的以下内容:
${matchingRides}
或使用您问题中的旧式scriptlet:
<%= request.getAttribute("matchingRides") %>