Looking for a way to convert Elemental2 JsObject
to Map<String, String>
:
import elemental2.core.JsObject;
public static Map<String, String> jsObjectToMap(JsObject obj) {
// code in question
}
Is there a more efficient way that just iterating and creating a new map (I'll post that as my own answer)?
Using simple iteration and copying:
import elemental2.core.JsObject;
import jsinterop.base.Js;
import jsinterop.base.JsPropertyMap;
import java.util.LinkedHashMap;
import java.util.Map;
public static Map<String, String> jsObjectToMap(JsObject obj) {
Map<String, String> result = new LinkedHashMap<>();
JsPropertyMap<Object> propMap = Js.asPropertyMap(obj);
propMap.forEach(key -> {
result.put(key, Objects.toString(propMap.get(key)));
});
return result;
}