Pergunta

Estou usando um objeto JavaScript como um objeto com propriedades de configuração. Por exemplo, eu tenho esse objeto em JavaScript:

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

Este objeto (NativoBject) é devolvido a mim na função Java. Por exemplo

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

Quero obter todas as propriedades do objeto e construir o hashmap dele.

Qualquer ajuda será apreciada.

Foi útil?

Solução

Bem, se você olhasse mais de perto, teria visto que o Nativo-Object implementa a interface do mapa, para que você possa ter funcionado muito bem com o NativeObject ... mas para responder à sua pergunta: você poderia ter usado a abordagem comum para obter a chave- pares de valor de qualquer mapa

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

Um elenco seria suficiente para o seu caso, porque você tem apenas cordas como valores. Então, se você realmente queria um hashmap:

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

Mas se você só queria um mapa genérico, era ainda mais simples e menos consumidor de carneiro:

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

Outras dicas

Então, eu resolvi meu 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top