java传递json_在java和javascript之间传递JSON的有效方法

我对Nashorn很新,并且在JVM之上编写脚本,并想知道我是否可以让我的

java代码和

javascripts更有效地进行通信.

我正在使用与JS对象一起使用的第三方JS库,在我的java代码中,我将要传递的数据作为Map< String,Object>数据.

因为第三方JS希望使用普通的JS对象,所以我无法按原样传递数据,尽管脚本引擎允许您访问Map,就像它是一个普通的JS对象一样.

我正在使用的脚本在data参数上使用’hasOwnProperty’,并且在Java对象上调用时失败.

当我尝试使用Object.prototype.hasOwnProperty.call(data,’myProp’)时,它也不起作用并且总是返回’false’.基本问题是Java Object不是javascript对象原型.

我最终做了这样的事情:

Map data;

ObjectMapper mapper = new ObjectMapper();

String rawJSON = mapper.writeValueAsString(data);

ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");

engine.eval('third_party_lib.js');

engine.eval('function doSomething(jsonStr) { var jsObj = JSON.parse(jsonStr); return doSomethingElse(jsObj); }');

Object value = ((Invocable) engine).invokeFunction("doSomething",rawJSON);

这可以按预期工作,但所有这些来回JSON解析很重,感觉可能有更简单,更快速和更直接的方式来做到这一点.

那么,有没有更好的方法在Java和Javascript之间传递JSON或者在我的Java代码中创建兼容的JS对象?

我已经看过this使用mustache.js进行模板渲染的指南,但它做的几乎完全相同.

谢谢 !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值