如何在 jsonnet 中 printf ?

Hak*_*aba 7 jsonnet

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

我正在用来error打印对象,但这会终止程序执行。

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

输出:

RUNTIME ERROR: Printing[{"myKey": 2}]
    snippet:6:1-37  
Run Code Online (Sandbox Code Playgroud)

有更好的方法吗?

jjo*_*jjo 6

跟进 Dave Cunningham 的答案,std.trace()自 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
   }
]
Run Code Online (Sandbox Code Playgroud)