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" } }