Domanda

Sto usando un oggetto JavaScript come un oggetto con proprietà di configurazione. Per esempio. Ho questo oggetto in javascript:

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

Questo oggetto (NativeObject) viene restituito a me in funzione di Java. Per es.

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

Voglio ottenere tutte le proprietà di oggetti e costruire HashMap da esso.

Ogni aiuto sarà apprezzato.

È stato utile?

Soluzione

bene, se hai guardato più da vicino, si sarebbe visto che NativeObject implementa l'interfaccia Map, così si potrebbe aver lavorato molto bene con il NativeObject .... Ma per rispondere alla tua domanda: si potrebbe avere utilizzato l'approccio comune per ottenere le coppie chiave-valore di qualsiasi mappa

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

Un cast sarebbe stato sufficiente per il vostro caso, perché hai solo stringhe come valori. Quindi, se si voleva davvero un HashMap:

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

Ma se si voleva solo un generico Map, è stato ancora più semplice e meno RAM consumando:

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

Altri suggerimenti

Quindi, ho risolto il mio problema:)

Codice:

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..
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top