JSONata是一种表达语言,旨在查询和转换JSON数据结构。
我发现JSONata的当前实现仅在Javascript中。(https://github.com/jsonata-js/jsonata)
我想在Java代码中使用JSONata。使用Java处理JSON文档将使工作变得更加轻松。
一种可能的方法是使用javax.script包下的标准Java类与基于Javascript的JSONata实现进行交互。
有没有人做过?是否有任何示例代码演示如何实现?
有没有人实现过在Java中使用JSONata的其他机制?
我刚刚发布了JSONata 的 Java 实现,称为 JSONata4Java。
JSONata4Java jar 文件位于 Maven Central 中:https://search.maven.org/search?q =g:com.ibm.jsonata4java pom.xml 依赖项
<dependency>
<groupId>com.ibm.jsonata4java</groupId>
<artifactId>JSONata4Java</artifactId>
<version>1.0.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
名为 JSONata4Java 的 jsonata 项目的 Java 端口已发布在此处: https: //github.com/IBM/JSONata4Java
如果您想做出贡献,请打印并签署相应的 JSONata4Java cla 文档并将其邮寄给我:
IBM Corporation
c/o Nathaniel Mills
16 Deer Hill Ln.
Coventry, CT, 06238, US
Attn: OSS CLA Processing
Run Code Online (Sandbox Code Playgroud)
提前致谢。
小智 5
以下代码段显示了如何使用嵌入式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);
Run Code Online (Sandbox Code Playgroud)
在此示例中,jsonata.js文件已从JSONata GitHub存储库以及try.jsonata.org中的“发票”示例代码中拉出。
需要额外的代码来处理错误,但这给出了基本思路。
| 归档时间: |
|
| 查看次数: |
1424 次 |
| 最近记录: |