[英]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.