2013-04-08 2 views
1

Я использую Jackson для записи данных и использования gwt-json на стороне клиента для анализа данных. Я рендеринг данных через словарь на стороне клиента, который медленный, поэтому я хочу ускорить процесс синтаксического анализа. Я пробовал с JSNI с eval() вместо словаря, и он делает хорошую работу по сравнению со словарем с точки зрения скорости, но у него проблемы с безопасностью.Каков наилучший метод для анализа данных json на стороне клиента?

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

GWT имеет в основном три способа разбора JSON (это без сторонней LIBS):

  • JSONParser наследия API. Это громоздко работать, но является наиболее гибким, особенно при работе с динамическим JSON (где структура не фиксируется заранее)
  • JsonUtils.safeEval() с JavaScriptObject с (акой типы наложения) является наиболее легким; он будет использовать родной JSON.parse(), где поддерживается, и будет проверять JSON с регулярным выражением перед передачей его eval() иначе
  • AutoBeans - это последнее дополнение. Он работает в GWT и в JVM (на стороне сервера, Android клиентов и т.д.)

Все подходы могут также работать, если у вас есть JavaScriptObject экземпляр, а не строку JSON (вы упоминаете Dictionary, который не собирается JSON, поэтому я добавляю эту точность).

+0

Я использую словарь вместо Jsni, словарь занимает время, чтобы получить данные из моего jsp. –

+0

Вряд ли что-нибудь более легкое, чем 'com.google.gwt.i18n.client.Dictionary', кроме простого JSNI. Являются ли ваши проблемы перфомансом в режиме devmode или prod? –

+0

Режим производства –