Question

J'utilise un objet JavaScript comme un objet avec des propriétés de configuration. Par exemple. J'ai cet objet en javascript:

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

Cet objet (NativeObject) me est retourné dans la fonction Java. Par exemple.

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

Je veux obtenir toutes les propriétés de l'objet et de construire HashMap de celui-ci.

Toute aide sera appréciée.

Était-ce utile?

La solution

Eh bien, si vous avez regardé de plus près, vous auriez vu que NativeObject implémente l'interface de la carte, de sorte que vous pourriez avoir travaillé très bien avec le NativeObject .... Mais pour répondre à votre question: vous auriez pu utiliser l'approche commune pour obtenir les paires de valeurs clés de toutes les cartes

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

Un casting aurait été suffisant pour votre cas, parce que vous avez en tant que valeurs que des chaînes. Donc, si vous vouliez vraiment un HashMap:

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

Mais si vous voulez juste une carte générique, il est encore plus simple et moins consommatrice de RAM:

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

Autres conseils

Alors, je résolu mon problème:)

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..
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top