0

我有一个用例,我有一个 java Map,我将它转换为 ProxyMap,使用 context.eval 在 javascript 中使用该映射,然后在 js(嵌套 json)中创建一个新对象。现在我想在 java 中使用在 javascript 中创建的对象,最好是 Map。

现在我的 js 创建的对象是动态的,我不知道所有字段可能存在什么。

所以基本上我正在做的是:

  1. context.getBindings("js").putMember("input", ProxyObject.fromMap(map));
  2. Value js = context.eval("js", "var obj = {'a':input['type']};");
  3. 现在我需要将它obj作为 Java 中的 Map 来获取。

据我所知,我可以使用objjava访问字段,getMemberobj可以是动态的,也可以是相当复杂的,我希望可能有另一种出路?

4

1 回答 1

1

Map您可以使用该Value.as(Map.class) 方法转换为 a 。

就像是:

 assert context.eval("js", "({foo:'bar'})").as(Map.class).get("foo").equals("bar");
于 2021-09-06T10:37:12.683 回答