[英]Using JSONata in Java throws exception
我正在尝试在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);
参考链接: 如何在Java中使用JSONata?
当我尝试使用此方法时,出现以下异常:
造成原因:jdk.nashorn.internal.runtime.ParserException::1445:12预期的(但找到了函数 validate(expr,input,environment){
在jdk.nashorn.internal.parser.AbstractParser.error(AbstractParser.java:294)在jdk.nashorn.internal.parser.AbstractParser.error(AbstractParser.java:279)在jdk.nashorn.internal.parser.AbstractParser.expectDontAdvance (AbstractParser.java:350),位于jdk.nashorn.internal.parser.AbstractParser.expect(AbstractParser.java:337),位于jdk.nashorn.internal.parser.Parser.functionExpression(Parser.java:2654),位于jdk.nashorn。位于jdk.nashorn.internal.parser.Parser.sourceElements(Parser.java:773)的internal.parser.Parser.statement(Parser.java:875)位于jdk.nashorn.internal.parser.Parser.functionBody(Parser.java: 2901),位于jdk.nashorn.internal.parser.parser.memberExpression(Parser.java:2506),位于jdk.nashorn.internal.parser.Parser.memberExpression(Parser.java:2506),位于jdk.nashorn.internal.parser.Parser位于jdk的jdk.nashorn.internal.parser.Parser.unaryExpression(Parser.java:3147)的.leftHandSideExpression(Parser.java:2372)位于jdk的jdk.nashorn.internal.parser.Parser.expression(Parser.java:3282)。 nashorn.internal.parser.Par 位于jdk.nashorn.internal.parser.Parser.memberExpression(Parser.java:2511)的ser.primaryExpression(Parser.java:1992)位于jdk的jdk.nashorn.internal.parser.Parser.leftHandSideExpression(Parser.java:2372) jdk.nashorn.internal.parser.Parser.assignmentExpression(Parser.java:3353)的.nashorn.internal.parser.Parser.unaryExpression(Parser.java:3147)在jdk.nashorn.internal.parser.Parser.variableStatement(Parser .java:1088)位于jdk.nashorn.internal.parser.Parser.statement(Parser.java:884)位于jdk.nashorn.internal.parser.Parser.sourceElements(Parser.java:773)位于jdk.nashorn.internal处。在jdk.nashorn.internal.parser.Parser.parse(Parser.java:249)处的parser.Parser.program(Parser.java:709)在jdk.nashorn.internal.parser.Parser.parse(Parser.java:283)在jdk.nashorn.internal.runtime.Context.compile(Context.java:1284)在jdk.nashorn.internal.runtime.Context.compileScript(Context.java:1251)在jdk.nashorn.internal.runtime.Context.compileScript (Context.java:627)在jdk.nashorn.api.scripting.NashornScriptEngine.comp ileImpl(NashornScriptEngine.java:535)... 6个
有关如何使用它的任何帮助将非常有用。
您需要为函数Evaluate提供三个参数,您只给了表达式。 根据链接,您还应该提供以下内容
代码:
engine.put("input", new String(sample));
and
engine.put("resultjson", resultjson);
希望能帮助到你
我通过使用Andrew提供的jsonata-es5.min.js的链接或jsonata.git/tags/v1.1.1/jsonata.js
jsonata.js来确认java version "1.8.0_152"
使用nashorn引擎的JSONata早期版本是否起作用。 jsonata邮局。
现在有了JSONata JavaScript代码的Java端口。 有关详细信息,请参见此问题的答案: 如何在Java中使用JSONata?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.