我使用Javascript对象作为具有配置属性的对象。 例如。我在javascript中有这个对象:
var myProps = {prop1: 'prop1', prop2: 'prop2', 'prop3': 'prop3'};
这个对象(NativeObject)在Java函数中返回给我。 E.g。
public Static void jsStaticFunction_test(NativeObject obj) {
//work with object here
}
我想从object获取所有属性并从中构建HashMap。
任何帮助将不胜感激。
答案 0 :(得分:10)
所以,我解决了我的问题:)
代码:
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..
}
答案 1 :(得分:2)
好吧,如果你仔细观察,你会发现NativeObject实现了Map接口,所以你可以很好地使用NativeObject ....但是要回答你的问题:你可以使用常见的方法来获取任何地图的键值对
for (Entry<Object, Object> e : obj.entrySet()){
mapParams.put(e.getKey().toString(), e.getValue().toString());
}
对于你的情况,演员阵容已足够了,因为你只有字符串作为值。所以,如果你真的想要一个HashMap:
HashMap<String, String> mapParams = new HashMap<String, String>((Map<String,String>)obj); //if you wanted a HashMap
但是如果你只是想要一个通用的地图,那就更简单了,而且消耗的RAM更少:
Map<String, String> mapParams = (Map<String,String>)obj;