我正在尝试从我的数据库加载事件。我正在使用GAE、java 和JSP。我的问题出在 json 响应中。如果我直接在脚本中写入 json 的输出,它可以正常工作,但是通过 ajax 调用则不行。这是我在java中的方法:
public void caricaDati(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
Date start=JavaTimeStampToDateTime(Double.parseDouble(req.getParameter("start")));
Date end=JavaTimeStampToDateTime(Double.parseDouble(req.getParameter("end")));
Date afterAddingTenMins=new Date(start.getDate() + (10 * 60000));
ObjectifyService.register(Appuntamento.class);
List<Appuntamento> listaA= ofy().load().type(Appuntamento.class).filter("d >=", start).filter("d <=", end).list();
System.out.println(listaA);
JSONObject j= new JSONObject();
for(Appuntamento a : listaA){
resp.setContentType("application/json"); // Set content type of the response so that jQuery knows what it can expect.
resp.setCharacterEncoding("UTF-8");
resp.getWriter().write(utilDispensaToJson(a, start, end));
}
}
json的方法:
public String utilDispensaToJson(Appuntamento k, Date Start, Date End) {
StringBuilder sb = new StringBuilder();
try {
sb.append("[");
sb.append("{");
sb.append("id : '" + k.getId() + "' , ");
sb.append("title : '" + k.getTitolo() + "' , ");
sb.append("start : '" + k.getData() + "' , ");
//sb.append("\"end\" : \"" + End + "\",");
sb.append("allDay : false ,");
sb.deleteCharAt(sb.lastIndexOf(","));
sb.append("}");
sb.append("]");
System.out.println(sb.toString());
return sb.toString();
} catch (Exception e) {
return "errore";
}
}
json的输出是:
[{id : '6473924464345088' , title : 'dfsf' , start : '2014/04/25 08:30' , allDay : false }]
最佳答案
您的输出 JSON 似乎无效。
属性(id、title、start、allday)应该用双引号引起来,字符串类型的值也是如此。这里使用单引号而不是双引号。
引用号:https://google-styleguide.googlecode.com/svn/trunk/jsoncstyleguide.xml#Double_Quotes
您还可以在此网站上测试 JSON 字符串的有效性:http://jsonlint.com/
关于java - 全日历和 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23266207/