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] ,因此至少该对象正确传递。 如果我打印的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" } }