我正在使用GWT来构建一个应用程序,而我正面临着一些我认为非常快的问题。我有一个JSONObject,其数据采用以下结构(但要大得多):
{"nodeData" : [
{ "name":"one", "attributes":["uno","dos"]},
{"name":"two", "attributes":["tres"]}
]
}
我正在尝试遍历JSON对象,将所有属性存储到每个节点对象都具有的arraylist中,属性大小范围为4到800.
JSONObject JSONnode = nodeData.get(i).isObject();
Node node = new Node(JSONnode.get("name").toString();
JSONArray attributeArray = JSONnode.get("Attributes").isArray();
int attributeSize = attributeArray.size();
for(int j = 0; k < attributeSize; j++){
node.attributeArrayList.add(attributeArray.get(j).toString();
}
我正在执行的for循环花了大约一分钟,这似乎太长了,我不知道如何改进它。分钟处于开发模式,但我不知道编译时它是否会更快。
答案 0 :(得分:3)
您是否尝试过使用叠加层?
GWT Coding Basics - JavaScript Overlay Types
您可以非常轻松地创建叠加类型: -
// An overlay type
class Customer extends JavaScriptObject {
// Overlay types always have protected, zero-arg ctors
protected Customer() { }
// Typically, methods on overlay types are JSNI
public final native String getFirstName() /*-{ return this.FirstName; }-*/;
public final native String getLastName() /*-{ return this.LastName; }-*/;
// Note, though, that methods aren't required to be JSNI
public final String getFullName() {
return getFirstName() + " " + getLastName();
}
}
非常容易使用,我认为比使用JSONObject对象要快得多。
答案 1 :(得分:0)
你如何使用GWT?在IDE里面? 根据我的经验,有太多的断点会减慢执行流程,你可以检查一下吗? 特别是当我在生产中看到它似乎很好......
答案 2 :(得分:0)
如果其他一切都失败了,你总是可以在原生Javascript中编写它并通过JSNI调用它。