2016-11-04 4 views
1

JSONataは、JSONデータ構造を照会および変換するための式言語です。JavaでJSONataを使用するにはどうすればよいですか?

JSONataの現在の実装はJavascriptでしか見つかりません。 (https://github.com/jsonata-js/jsonata

JavaコードでJSONataを使用したいと思います。 JavaでJSON文書を操作するのがずっと簡単になります。

可能な方法は、javax.scriptパッケージの標準Javaクラスを使用して、JavascriptベースのJSONata実装とやりとりすることです。

すでにこれを行った人はいますか?これを実現する方法を示すサンプルコードはありますか?

JavaでJSONataを使用する他のメカニズムを実装した人はいますか?

+0

https://github.com/jayway/JsonPath多分? –

+1

JsonPathはうまく見えますが、現時点ではJsonataが必要でした。情報を感謝します。 –

答えて

3

次のスニペットは、この例では

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); 
...あなたが埋め込まれたJavaScriptエンジンを使用してJavaからJSONataプロセッサを呼び出す方法を示し、jsonata.jsファイルがJSONata GitHubのレポからプルダウンされています try.jsonata.orgからの「請求書」サンプルコードも含まれています。

エラーを処理するには追加コードが必要ですが、これは一般的な考え方を示しています。

+0

これは優れています。私はこのコードに基づいて自分用のライブラリを作成しました。ありがとうございました。 –

関連する問題