首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中使用JSONata引发异常

在Java中使用JSONata引发异常
EN

Stack Overflow用户
提问于 2018-01-18 02:06:57
回答 4查看 623关注 0票数 0

我正试图在JSONata中使用java

代码语言:javascript
复制
JSONata version - 1.4.0
Java Version - 1.8

步骤:在类路径中包括Jsonata.js

调用:

代码语言:javascript
复制
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
Invocable inv = (Invocable) engine;
FileReader jsonata = new FileReader("jsonata.js");
// load the JSONata processor
engine.eval(jsonata);

参考链接:如何在Java中使用JSONata?

当我尝试使用它时,我得到以下异常:

由: jdk.nashorn.internal.runtime.ParserException::1445:12预期(但发现函数计算(expr,输入,环境){ 在jdk.nashorn.internal.parser.AbstractParser.error(AbstractParser.java:294) at jdk.nashorn.internal.parser.AbstractParser.error(AbstractParser.java:279) at jdk.nashorn.internal.parser.AbstractParser.expectDontAdvance(AbstractParser.java:350) at jdk.nashorn.internal.parser.AbstractParser.expect(AbstractParser.java:337) at jdk.nashorn.internal.parser.Parser.functionExpression(Parser.java:2654) at jdk.nashorn.internal.parser.Parser.statement(Parser.jdk.nashorn.internal.parser.Parser.sourceElements(Parser.java:773) at jdk.nashorn.internal.parser.Parser.functionBody(Parser.java:2901) at jdk.nashorn.internal.parser.Parser.functionExpression(Parser.java:2663) at jdk.nashorn.internal.parser.Parser.memberExpression(Parser.java:2506) at jdk.nashorn.internal.parser.Parser.leftHandSideExpression(Parser.java:2372) at jdk.nashorn.internal.parser.Parser.unaryExpression( jdk.nashorn.internal.parser.Parser.expression(Parser.java:3282) at jdk.nashorn.internal.parser.Parser.primaryExpression(Parser.java:1992) at jdk.nashorn.internal.parser.Parser.memberExpression(Parser.java:2511) at jdk.nashorn.internal.parser.Parser.leftHandSideExpression(Parser.java:2372) at jdk.nashorn.internal.parser.Parser.unaryExpression(Parser.java:3147) at jdk.nashorn.internal.parser ).Parser.assignmentExpression(Parser.java:3353) at jdk.nashorn.internal.parser.Parser.variableStatement(Parser.java:1088) at jdk.nashorn.internal.parser.Parser.statement(Parser.java:884) at jdk.nashorn.internal.parser.Parser.sourceElements(Parser.java:773) at jdk.nashorn.internal.parser.Parser.program(Parser.java:709) at jdk.nashorn.internal.parser.Parser.parse(Parser.java:283) at jdk.nashorn.internal.jdk.nashorn.internal.runtime.Context.compile(Context.java:1284) at jdk.nashorn.internal.runtime.Context.compileScript(Context.java:1251) at jdk.nashorn.internal.runtime.Context.compileScript(Context.java:627) at jdk.nashorn.api.scripting.NashornScriptEngine.compileImpl(NashornScriptEngine.java:535) .6 moree

任何关于如何使用它的帮助都是有用的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-01-18 12:05:01

从v1.2开始,jsonata.js就使用ES6特性,因此您需要确保所使用的Nashorn版本支持此功能。或者,您可以使用由Babel在JSONata构建中生成的jsonata-es5.js版本。您可以通过克隆GitHub回购并运行npm t,或者从这里下载它。

票数 1
EN

Stack Overflow用户

发布于 2018-01-18 06:37:15

您需要提供包含三个参数的函数求值,只需给出表达式。根据链接,您还应该提供ff

代码:

代码语言:javascript
复制
engine.put("input", new String(sample));
and 
engine.put("resultjson", resultjson);

希望它能帮上忙

票数 0
EN

Stack Overflow用户

发布于 2018-03-31 11:16:23

我确认了早期版本的JSONata与java version "1.8.0_152"中的nashorn引擎一起使用到jsonata-es5.min.js的链接或来自jsonata存储库的jsonata.git/tags/v1.1.1/jsonata.js

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48312771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档