【问题标题】:Iterating over JSONObject in GWT JSNI在 GWT JSNI 中迭代 JSONObject
【发布时间】:2013-06-07 10:49:32
【问题描述】:

我有一个本机方法应该遍历 JSONObject。有没有办法做到这一点?

public native void foo(JSONObject c)/*-{
    var keys = c.@com.google.gwt.json.client.JSONObject::keySet()();

    for ( var k : keys ){
        alert(k); // this does not fire up. no error in console :(
    }
}-*/;

另外,有没有办法将Java Map 类型转换为JSONObject

任何提示将不胜感激!谢谢! :)

【问题讨论】:

    标签: json gwt iteration jsni


    【解决方案1】:

    JSONObject#keySet 返回一个Set,它是一个包装 JS 数组的对象(在 prod 模式下;在 DevMode 中它是来自 JVM 的标准 java.util.Set

    所以,要么使用纯 Java:

    Set<String> keys = c.keySet();
    for (String key : keys) {
      Window.alert(key); // or call a JSNI method here if you need?
    }
    

    或者先提取底层的JavaScriptObject,然后可以使用JSfor…in

    var o = c.@com.google.gwt.json.client.JSONObject::getJavaScriptObject()();
    for (var k in o) {
      if (o.hasOwnProperty(k)) {
        alert(k);
      }
    }
    

    【讨论】:

    • 正是我需要的!谢谢! :)
    【解决方案2】:

    您是否尝试过类似的方法:

    for (var k in c) {
      if (c.hasOwnProperty(k)) {
        alert(k+":"+c[k]);
      }
    }
    

    我的记忆没有失败,我认为这段代码有效......

    关于第二个问题,如果你的实体是Java-GWT有效实体,你可以使用Autobeans获取JsonObject。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-17
      • 1970-01-01
      • 2022-12-26
      • 1970-01-01
      • 2012-04-27
      相关资源
      最近更新 更多