Frage

Ich bin mit einem Javascript-Objekt als ein Objekt mit Konfigurationseigenschaften. Z.B. Ich habe dieses Objekt in javascript:

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

Dieses Objekt (Native) ist mir in Java-Funktion zurückgegeben. Z.

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

Ich möchte von ihm alle Eigenschaften von Objekt und Build HashMap erhalten.

Jede Hilfe wird geschätzt.

War es hilfreich?

Lösung

gut, wenn man genauer hinsah, hätte man gesehen, dass Native implementiert die Map-Schnittstelle, so dass Sie sehr gut mit der Native gearbeitet haben könnten .... Aber zu Ihrer Frage: Sie haben den gemeinsamen Ansatz verwendet haben, könnten für immer die Schlüssel-Wert-Paare jeder Karte

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

Ein Abguss wäre genug für den Fall gewesen, weil man nur Strings als Werte haben. Also, wenn Sie wirklich eine HashMap wollen:

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

Aber wenn Sie nur eine generische Karte wollte, war es noch einfacher, und weniger RAM raubend:

Map<String, String> mapParams = (Map<String,String>)obj;

Andere Tipps

So löste ich mein Problem:)

Code:

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..
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top