2017-07-27 7 views
0

を解決しないと、ここに私のコードです。私はそれが印刷されcを渡すときには:Nashornエンジンはparamsは

item1has quantity of queryResult[0].quantity 

私は印刷する必要があります。

item1has quantity of 2 

はどうすればこれを行うことができますか?私はここでjavaとnashornエンジンを使用しています。

答えて

0

バインディングに入れた文字列は単なるリテラルなので、スクリプトコードとして評価することはできません。

[...] 
String x= "item1 has quantity of "; 
[...] 
String script = "var queryResult = JSON.parse(jsonArrayKey);" 
       + "var resultedString = c + queryResult[0].quantity"; 
[...] 

より柔軟なソリューションは、次の可能性がたとえば:あなたのコードを変更した場合、それはあなたが期待するようなコンテンツを印刷し、次に続くとしてあなたの意図である私は明確ではない持っていますが

ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn"); 
Bindings params = engine.createBindings(); 
params.put("jsonArrayKey", "[{\"quantity\":2},{\"quantity\":3}]"); 
params.put("msg", "item <ID> has quantity of <VALUE>"); 
params.put("index", 0); 
String script = "var queryResult = JSON.parse(jsonArrayKey);\n" 
       + "var resultedString = msg.replace('<ID>', index + 1).replace('<VALUE>', queryResult[index].quantity);"; 
関連する問題