我正在使用Jackson编写数据并在客户端使用gwt-json来解析数据。我是 在客户端通过字典渲染数据很慢,所以我想让它在解析速度。 我尝试使用带有eval()而不是Dictionary的JSNI,它在速度方面与字典相比做得很好,但它存在安全问题。
private List<Party> getPartyListFormJackson() {
String name = "partyListInfo"; // jsp variable
String partyListStr = getString(name);
JSONArray partyJSONArray = JSONParser.parse(partyListStr).isArray();
for(int i=0; i < partyJSONArray.size(); i++) {
JSONObject partyJSONObject = (JSONObject) partyJSONArray.get(i);
Party party = VsJacksonFactory.getParty(partyJSONObject);
partyList.add(party);
}
return partyList;
}
public static native String getString(String name) /*-{
return eval('$wnd.'+ name);
}-*/;
在上面我可以使用哪种方法代替eval()?
任何人都可以对此有所了解,以使其更好。
由于 MSNaidu
答案 0 :(得分:1)
GWT基本上有3种解析JSON的方法(没有第三方库):
JSONParser
是旧版API。使用它很麻烦,但是最灵活,特别是当你使用动态 JSON(结构没有提前修复)时。JsonUtils.safeEval()
s(又名叠加类型)的JavaScriptObject
是最轻量级的;它将使用支持的原生JSON.parse()
,并在将其交给eval()
之前使用regexp验证JSON否则AutoBeans
是最新添加的内容。它适用于GWT和JVM(服务器端,Android客户端等)当你有JavaScriptObject
实例而不是JSON字符串时,所有方法也可以工作(你提到Dictionary
,这不是关于JSON;这就是我添加这个精度的原因。)