Java ↔ JavaScript (Map<String, Any>) в ScriptEngine, кажется, только "выходит" из JS→Java

Я использую JS из Kotlin (Java 8)

val engine = NashornScriptEngineFactory().getScriptEngine(
    arrayOf("--language=es6",
        "-strict", // too much?
        "--no-java",
        //"--no-syntax-extensions",
        "--optimistic-types"), null)

Получение карты (технически {}) результатов, возвращаемых из функции JS в Java, работает нормально.

НО, когда я пытаюсь передать карту, я предполагал, что она будет преобразована в объект. (Потому что я привык к JSON).

var myInput = mapOf("key1" to "value1", "key2" to 1234)
((engine as Invocable).invokeFunction("myFunction", myInput)

Но myFunction(arg1) упорно настаивает на том, что arg1 не определен, вместо ожидаемого {'key1':'value1','key2':1234}

"--No-java" убивает его, потому что его нужно поместить в HashMap? Нужно ли мне свести мою карту в вараг, потому что только базовые типы могут преодолеть разрыв?

Действительно странная часть в том, что на обратном пути, возвращая объект (карту) из JavaScript myFunction появляется снова в Kotlin как карта просто отлично!

0 ответов

Другие вопросы по тегам