如何在jsonnet中打印ff?

时间:2018-04-09 22:21:24

标签: jsonnet

有没有办法在jsonnet中打印对象?这主要用于调试目的。

我正在使用error打印对象但终止程序执行。

local obj = [
{
  myKey: 2,
}];
error 'Printing' + std.toString(obj)

输出:

RUNTIME ERROR: Printing[{"myKey": 2}]
    snippet:6:1-37  

更好的方法吗?

3 个答案:

答案 0 :(得分:3)

为了跟进Dave Cunningham的回答std.trace() is available since 0.11.0,它的行为就像一个“中间的钩子”,它的第一个参数是你要显示的字符串,第二个是你想要返回的字符串。

将其用于提供的示例:

$ cat foo.jsonnet
local obj = [
{
    myKey: 2,
}];
std.trace("obj content: %s" % [obj], obj)

$ jsonnet foo.jsonnet 
TRACE: foo.jsonnet:5 obj content: [{"myKey": 2}]
[
   {
      "myKey": 2
   }
]

答案 1 :(得分:2)

对于子孙后代,OP非常友好地提供了一个新功能来解决这个问题:std.trace(“message”,rest)。

答案 2 :(得分:1)

[已废弃,见其他答案]

目前(截至jsonnet 0.10)遗憾的是没有。有计划将其包含在将来的版本中(问题在这里:https://github.com/google/jsonnet/issues/130)。

人们使用错误(就像你在代码中展示的那样)或者修改代码只输出他们想要的部分(它有多方便取决于你如何构建你的代码)。