Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中使用JSONata?_Java_Json - Fatal编程技术网

如何在Java中使用JSONata?

如何在Java中使用JSONata?,java,json,Java,Json,JSONata是一种用于查询和转换JSON数据结构的表达式语言 我发现目前JSONata的实现只使用Javascript。() 我想在Java代码中使用JSONata。在Java中操作JSON文档将变得更加容易 一种可能的方法是使用javax.script包下的标准Java类与基于Javascript的JSONata实现交互 有人已经这样做了吗?是否有任何示例代码来演示如何实现这一点 是否有人实现了在Java中使用JSONata的其他机制?下面的代码片段展示了如何使用嵌入式JavaScript引

JSONata是一种用于查询和转换JSON数据结构的表达式语言

我发现目前JSONata的实现只使用Javascript。()

我想在Java代码中使用JSONata。在Java中操作JSON文档将变得更加容易

一种可能的方法是使用javax.script包下的标准Java类与基于Javascript的JSONata实现交互

有人已经这样做了吗?是否有任何示例代码来演示如何实现这一点


是否有人实现了在Java中使用JSONata的其他机制?

下面的代码片段展示了如何使用嵌入式JavaScript引擎从Java调用JSONata处理器

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

// read and JSON.parse the input data
byte[] sample = Files.readAllBytes(Paths.get("sample.json"));
engine.put("input", new String(sample));
Object inputjson = engine.eval("JSON.parse(input);");

// query the data
String expression = "$sum(Account.Order.Product.(Price * Quantity))";  // JSONata expression
Object expr = inv.invokeFunction("jsonata", expression);
Object resultjson = inv.invokeMethod(expr, "evaluate", inputjson);

// JSON.stringify the result
engine.put("resultjson", resultjson);
Object result = engine.eval("JSON.stringify(resultjson);");
System.out.println(result);
在本例中,jsonata.js文件已从jsonata GitHub repo以及中的“Invoice”示例代码中删除


需要额外的代码来处理错误,但这给出了总体思路。

您可以使用JSONata Java项目:

JSONata的原始(JavaScript)解释器的Java端口 JSON查询和转换语言


我刚刚发布了一个JSONata的Java实现,名为JSONata4Java

马文中心: JSONata4Java jar文件位于Maven Central的以下位置: pom.xml依赖关系

<dependency>
 <groupId>com.ibm.jsonata4java</groupId>
 <artifactId>JSONata4Java</artifactId>
 <version>1.0.0</version>
</dependency>

提前谢谢。

也许吧?JsonPath看起来不错,不过现在我需要Jsonata。谢谢你的信息,这太好了。我已经基于此代码为自己创建了一个库。谢谢。看起来这个java端口不太远。JS版本可能是目前唯一的选择。
IBM Corporation
c/o Nathaniel Mills
16 Deer Hill Ln.
Coventry, CT, 06238, US
Attn: OSS CLA Processing