JSONiq console.log或打印

时间:2018-05-22 17:49:27

标签: zorba jsoniq

是否可以在JSONiq / Zorba脚本中打印到控制台以进行调试?

e.g。

declare function utils:lowerCaseKey($obj as item) as item{
   print($obj)
  {|
    for $k in  distinct-values(keys( $obj ))
    return { lower-case($k) : $obj.$k } (: note the ',' to create a sequence :)
  |}
};

1 个答案:

答案 0 :(得分:0)

是:trace功能用于此目的。它可以在需要查看输出的任何表达式上调用,以及您选择的标签。

declare function utils:lowerCaseKey($obj as item) as item
{
  {|
    for $k in  distinct-values(keys( trace($obj, "obj") ))
    return { lower-case($k) : $obj.$k }
    (: note the ',' to create a sequence :)
  |}
};

这将导致输出,例如:

obj [1]: { "foo" : "bar" }
obj [2]: { "foo" : "bar2" }

在每个引擎中应记录确切地(在命令行上,在日志文件中......)发送此输出。 Zorba默认输出到stderr。

请注意,这是一种声明性语言,因此trace的行为与print不同。如果不需要,可以对某些表达式进行优化,在这种情况下,它不会产生任何痕迹。例如,

(1, trace(2, "foo"))[1]

可能不会产生痕迹。同样,生成跟踪的顺序可能与实现有关,因为JSONiq(如XQuery)使每个引擎都能自由地评估最佳表达式,只要其结果符合规范。