哪个是在客户端解析json数据的最佳方法?

时间:2013-04-08 09:47:28

标签: json gwt jackson jsni

我正在使用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

1 个答案:

答案 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;这就是我添加这个精度的原因。)