Java 循环的GWT不是循环
我正在开发一个GWT应用程序,我有这种方法:Java 循环的GWT不是循环,java,json,gwt,for-loop,Java,Json,Gwt,For Loop,我正在开发一个GWT应用程序,我有这种方法: private static List<Ticket> getTicketsFromJSON(String ticketsJSONString) { JSONValue ticketsArrayValue = JSONParser.parseLenient(ticketsJSONString); JSONArray ticketsArray = ticketsArrayValue.isArray(); Li
private static List<Ticket> getTicketsFromJSON(String ticketsJSONString) {
JSONValue ticketsArrayValue = JSONParser.parseLenient(ticketsJSONString);
JSONArray ticketsArray = ticketsArrayValue.isArray();
List<Ticket> ticketsList = new LinkedList<Ticket>();
for (int i = 0; i < ticketsArray.size(); i++) {
JSONObject ticketJSON = ticketsArray.get(i).isObject();
Ticket ticket = new Ticket((int)ticketJSON.get("id").isNumber().doubleValue(),
ticketJSON.get("name").isString().stringValue(),
ticketJSON.get("description").isString().stringValue(),
(int)ticketJSON.get("complexity").isNumber().doubleValue(),
(int)ticketJSON.get("priority").isNumber().doubleValue(),
(long)ticketJSON.get("started").isNumber().doubleValue(),
(long)ticketJSON.get("finished").isNumber().doubleValue(),
(long)ticketJSON.get("timespent").isNumber().doubleValue());
ticketsList.add(ticket);
}
Window.alert("Out of the cicle");
return ticketsList;
}
我尝试使用和Integer.parseInt来获取值,但结果相同。作为方法参数的字符串不是空的。如果有人知道它为什么不工作,请告诉我。我猜你的代码在一个JSON get值上崩溃了,例如
(int)ticketJSON.get(“复杂性”).isNumber()
如果这些值为null或缺失,会发生什么情况?您的代码将因空指针异常(NPE)而崩溃
输入一些行以检查NPE
一般来说,您可能会考虑使用JavaScript覆盖类型来进行这种事情。您可以只为票据创建一个覆盖,而不是复制每个值:使用覆盖类型是比这种极其复杂的JSON解析更好的解决方案。。。。我经常使用它们,它们工作得很好!这一切都很好,但是没有空值,逻辑上说代码应该可以正常工作,但事实上,它甚至没有完成一个循环……是的,它可能在某个地方崩溃了。可以使用Eclipse逐步完成,也可以将代码拆分并放入println或Window.alert消息中,然后查看它死在哪一行。您还应该发布一个JSON数据的示例,例如
ticketsJSONString
package org.kanbanizer.client.beans;
public class Ticket {
private int id;
private String name;
private String description;
private int complexity;
private int priority;
private long started;
private long finished;
private long timespent;
public Ticket() {
}
public Ticket(int id, String name, String description, int complexity,
int priority, long started, long finished, long timespent) {
this.id = id;
this.name = name;
this.description = description;
this.complexity = complexity;
this.priority = priority;
this.started = started;
this.finished = finished;
this.timespent = timespent;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public int getComplexity() {
return complexity;
}
public void setComplexity(int complexity) {
this.complexity = complexity;
}
public int getPriority() {
return priority;
}
public void setPriority(int priority) {
this.priority = priority;
}
public long getStarted() {
return started;
}
public void setStarted(long started) {
this.started = started;
}
public long getFinished() {
return finished;
}
public void setFinished(long finished) {
this.finished = finished;
}
public long getTimespent() {
return timespent;
}
public void setTimespent(long timespent) {
this.timespent = timespent;
}
}