Я хотел бы передать класс данных из 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" } }