Rhino: Wie alle Eigenschaften von Scriptableobject bekommen?
-
23-09-2019 - |
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.
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..
}