Pregunta

Estoy utilizando un objeto Javascript como un objeto con propiedades de configuración. P.ej. Tengo este objeto en javascript:

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

Este objeto (NativeObject) se volvió a mí en función de Java. Por ejemplo.

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

Quiero conseguir todas las propiedades de objeto y acumulación HashMap de ella.

Se apreciará Cualquier ayuda.

¿Fue útil?

Solución

bien, si uno mira de cerca, se habría visto que implementa NativeObject la interfaz del mapa, por lo que podría haber funcionado muy bien con el NativeObject .... Pero para responder a su pregunta: ¿se podría haber utilizado el enfoque común para conseguir los pares de valores clave de cualquier mapa

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

Un reparto habría sido suficiente para su caso, ya que hay sólo cadenas como valores. Por lo tanto, si realmente quería un HashMap:

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

Pero si sólo quería un genérico mapa, que era aún más simple y menos RAM que consume:

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

Otros consejos

Por lo tanto, he resuelto mi problema:)

Código:

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..
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top