Question

I am using a Javascript object as an object with configuration properties. E.g. I have this object in javascript:

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

This object (NativeObject) is returned to me in Java function. E.g.

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

I want to get all properties from object and build HashMap from it.

Any help will be appreciated.

Was it helpful?

Solution

well, if you looked closer, you would have seen that NativeObject implements the Map interface, so you could have worked very well with the NativeObject.... But to answer your question: you could have used the common approach for getting the key-value pairs of any map

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

A cast would have been enough for your case, because you have only strings as values. So, if you really wanted a HashMap:

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

But if you just wanted a generic Map, it was even simpler, and less RAM consuming:

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

OTHER TIPS

So, I solved my 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..
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top