如何在JSONata中迭代基元数组

时间:2018-01-24 23:00:08

标签: java arrays iteration nashorn jsonata

我想知道如何迭代一个基本数组,例如int数组,或者它是否是一个简单的字符串数组。

{
   "printers":[
      "HP-1234",
      "HP-Inkjet"
   ]
}

我想迭代数组并做一些这样的事情:

for( String obj:printers) {
    if(obj.contains("HP")) {
        //do something here
    }
}

我如何使用JSONata执行此操作?

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

我找到了如下解决方案:

$map(printers, function($v, $i, $a) {
    $v~>$string()~>$contains("HP")?"HP Priter":$v
})

但是因为Am使用java通过Nashorn调用jasonata.js, 我无法得到正确的结果。

这就是我所做的:

        Object resultjson = inv.invokeMethod(expr, "evaluate", inputjson);        
        engine.put("resultjson", resultjson);
        Object result = engine.eval("JSON.stringify(resultjson);");
        System.out.println("Result:" + result);

输出结果是:[object Object] 寻找指针以json格式获得结果。

注意:我使用的是jsonata-es5.js,因为它与Nashorn兼容