java - 在Java中使用JSONata抛出异常

标签 java json exception jsonata

我正在尝试在 java 中使用 JSONata

JSONata version - 1.4.0
Java Version - 1.8

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

调用:

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);

引用链接: How can I use JSONata in Java?

当我尝试使用它时,出现以下异常:

Caused by: jdk.nashorn.internal.runtime.ParserException: :1445:12 Expected ( but found function evaluate(expr, input, environment) {

at 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.java:875) at 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(Parser.java:3147) at 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.parser.Parser.parse(Parser.java:249) at 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

有关如何使用它的任何帮助都会很有用。

最佳答案

自 v1.2 起,jsonata.js 使用 ES6 功能,因此您需要确保您使用的 Nashorn 版本支持此功能。或者,您可以使用 Babel 在 JSONata 构建中生成的 jsonata-es5.js 版本。您可以通过克隆 GitHub repo 来获取此信息并运行 npm t,或者从 here 下载它.

关于java - 在Java中使用JSONata抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48312771/

相关文章:

android - Unity-Android-App 第一次运行时崩溃,但从第二次开始运行正常

java - 无法用spring boot+JWT+MySQL实现RBAC

java - 错误 UIDefaults.getUI() 在我的外观中失败

java - 将 boolean 值设置为 true,但 filewriter 仍然覆盖文件,有什么建议吗?

javascript - 如何将输入值添加到数组中

c# - C# 中的异常有多昂贵?

java - 如何计算单词的拼字游戏分数

PHP mySql 数据到 JSON 文件

javascript - Node js,使用 couchdb 发出请求

java - 线程 "main"java.lang.ArrayIndexOutOfBoundsException 中的异常