Nashorn, передать java-объект javascript как JSON.stringified

Я хотел бы передать класс данных из Kotlin в javascript и сериализовать его как JSON:

engine.eval("""function jsFunction(pojo) { print(pojo); JSON.stringify({ "field": pojo })}""") engine.invokeFunction("jsFunction", Pojo(a="a", b="b")) 

результат, который мне бы понравился, был бы json с:

 { "field": { "a": "a", "b": "b" } } 

но результат {} вместо

Функция print распечатывает Pojo[a=a, b=b] , поэтому по крайней мере объект передается правильно. Если я напечатаю typeof pojo, я получу object . Если я сделаю:

 engine.eval("""function jsFunction(pojo) { print(pojo); JSON.stringify({ "field": pojo.a })}""") engine.invokeFunction("jsFunction", Pojo(a="a", b="b")) 

то я получаю:

 { "field": "a" } 

Но это побеждает цель. Я хотел бы получить полную структуру, сериализованную из коробки.

Если я сериализую объект вручную в json, передайте его функции js:

 engine.eval("""function jsFunction(pojoJson) { pojo = JSON.parse(pojoJson); print(pojo); JSON.stringify({ "field": pojo })}""") engine.invokeFunction("jsFunction", """{ "a":"a", "b":"b" }""") 

Я получаю [object Object] распечатан, и json выглядит так, как ожидалось:

 { "field": { "a": "a", "b": "b" } } 

Intereting Posts