【问题标题】:Access complex Javascript object in Java GraalVM在 Java GraalVM 中访问复杂的 Javascript 对象
【发布时间】:2021-09-03 23:02:15
【问题描述】:

我有一个用例,我有一个 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 中的地图。

据我所知,我可以使用getMember 在java 中访问obj 的字段,但由于obj 可以是动态的并且也可以是相当复杂的,我希望可能有另一个出路?

【问题讨论】:

    标签: javascript java graalvm graaljs


    【解决方案1】:

    您可以使用Value.as(Map.class) method 转换为Map

    类似:

     assert context.eval("js", "({foo:'bar'})").as(Map.class).get("foo").equals("bar");
    

    【讨论】:

      猜你喜欢
      • 2021-01-17
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 2013-10-09
      • 2011-12-04
      • 2017-12-29
      • 1970-01-01
      • 2011-09-28
      相关资源
      最近更新 更多