如何将Elemental2 JsObject转换为Map<String, String>?
将Elemental2 JsObject转换为Map<String, String>的高效方法?
问题描述
需要实现一个方法,把Elemental2的JsObject转换为Java的Map<String, String>,想了解是否存在比遍历创建新Map更高效的实现方式:
import elemental2.core.JsObject; public static Map<String, String> jsObjectToMap(JsObject obj) { // 待实现代码 }
回答
不存在比遍历更高效的实现方式,原因如下:
JsObject是Elemental2对JavaScript普通对象的包装,这类对象的键值对是动态存储的,没有原生API可以直接一次性映射到Java的Map结构。- Java的
Map是强类型集合,必须将JS对象的每个键值对逐一转换(还要确保值能转为String类型)并放入Map,这个遍历步骤无法省略。
哪怕借助JS层面的Object.entries()方法先获取键值对数组,最终在Java代码里还是需要遍历这个数组来构建Map,本质和直接遍历没有效率差异。
这里提供一个常规的遍历实现作为参考:
import elemental2.core.JsObject; import java.util.HashMap; import java.util.Map; public static Map<String, String> jsObjectToMap(JsObject obj) { Map<String, String> resultMap = new HashMap<>(); String[] keys = JsObject.keys(obj); for (String key : keys) { Object value = obj.get(key); resultMap.put(key, value != null ? value.toString() : null); } return resultMap; }
内容的提问来源于stack exchange,提问作者R A
相关产品推荐
相关产品推荐

