#javascript #java #graalvm #graaljs
Вопрос:
У меня есть пример использования, когда у меня есть карта java, которую я конвертирую в ProxyMap, использую эту карту в javascript с помощью context.eval, а затем создаю новый объект в js (вложенный json). Теперь я хочу использовать объект, созданный в javascript еще в java, предпочтительно карту.
Теперь мой созданный js объект динамичен, и я не знаю, какие все поля могут присутствовать.
Так что в основном то, что я делаю, это:
context.getBindings("js").putMember("input", ProxyObject.fromMap(map));
Value js = context.eval("js", "var obj = {'a':input['type']};");
- Теперь мне нужно получить это
obj
в виде карты на Java.
Из того, что я выяснил, я могу получить доступ к полям obj
в java, используя getMember
, но, поскольку obj
они могут быть динамичными и могут быть довольно сложными, я надеялся, что может быть другой выход?
Ответ №1:
Вы можете преобразовать в a Map
, используя этот Value.as(Map.class)
метод.
Что-то вроде:
assert context.eval("js", "({foo:'bar'})").as(Map.class).get("foo").equals("bar");