【问题标题】:writing JSON with JSP用 JSP 编写 JSON
【发布时间】:2011-04-26 00:36:21
【问题描述】:

您可能会使用某些库自动执行此操作。但是我是 Java 和 JSON 的新手,我需要一个快速的解决方案。

我想要的是从 JSP 文件中写下(回显)JSON。到目前为止一切顺利,但现在我有一个对象列表。所以我开始快速枚举。

现在的问题是:如何使用 }] 而不是 , 关闭 JSON 数组?通常我会在 and 中添加 nill 或 null。

这是我的循环:

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

     <% 
     }
     %>   
}  ]    

【问题讨论】:

    标签: java javascript arrays json list


    【解决方案1】:

    改为使用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。只需下载 JAR 并将其放入 /WEB-INF/lib。这样你就可以在 servlet 中得到以下结果:

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

    以及 JSP 中的以下内容:

    ${matchingRides}
    

    或者使用您问题中的老式scriptlet:

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

    【讨论】:

    • 谢谢,这是我所希望的快速而肮脏的解决方案。下次我会尝试 GSON。 tnx 也用于编辑...
    • 好的。重读。这听起来很容易。我现在就试试。再次Tnx
    • 我也必须这样做:右键单击 Java 项目,选择构建路径,然后将 GSON jar 添加为新库。
    • 那么你错误地选择/准备了项目。它必须是一个动态网络项目
    【解决方案2】:

    1.) 在您的应用程序容器中下载并设置 GSON
    2.)

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

    如果你避开精神错乱的道路,你将在短期和长期内为自己节省时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-17
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      • 2011-08-23
      • 1970-01-01
      • 2018-12-15
      相关资源
      最近更新 更多