5

構成プロパティを持つオブジェクトとしてJavascriptオブジェクトを使用しています。たとえば、JavaScriptにこのオブジェクトがあります。

var myProps = {prop1: 'prop1', prop2: 'prop2', 'prop3': 'prop3'};

このオブジェクト(NativeObject)は、Java関数で返されます。例えば

public Static void jsStaticFunction_test(NativeObject obj) {
    //work with object here
}

オブジェクトからすべてのプロパティを取得し、そこからHashMapを構築したいと思います。

どんな助けでもありがたいです。

4

2 に答える 2

10

だから、私は私の問題を解決しました:)

コード:

public static void jsStaticFunction_test(NativeObject obj) {
    HashMap<String, String> mapParams = new HashMap<String, String>();

    if(obj != null) {
        Object[] propIds = NativeObject.getPropertyIds(obj);
        for(Object propId: propIds) {
            String key = propId.toString();
            String value = NativeObject.getProperty(obj, key).toString();
            mapParams.put(key, value);
        }
    }
    //work with mapParams next..
}
于 2010-04-01T10:21:09.823 に答える
2

よく見ると、NativeObjectがMapインターフェイスを実装していることがわかるので、NativeObjectをうまく操作できたはずです。しかし、質問に答えるには、キーを取得するための一般的なアプローチを使用できます。任意のマップの値のペア

for (Entry<Object, Object> e : obj.entrySet()){
   mapParams.put(e.getKey().toString(), e.getValue().toString());
}

値として文字列しかないため、キャストで十分です。したがって、本当にHashMapが必要な場合は、次のようにします。

HashMap<String, String> mapParams = new HashMap<String, String>((Map<String,String>)obj); //if you wanted a HashMap

しかし、一般的なマップが必要な場合は、さらに単純で、RAMの消費量が少なくなります。

Map<String, String> mapParams = (Map<String,String>)obj;
于 2012-05-30T10:55:29.567 に答える