有没有办法在 jsonnet 中打印对象?这主要用于调试目的。
我正在使用error
打印对象,但这会终止程序执行。
local obj = [
{
myKey: 2,
}];
error 'Printing' + std.toString(obj)
输出:
RUNTIME ERROR: Printing[{"myKey": 2}]
snippet:6:1-37
更好的方法来做到这一点?
有没有办法在 jsonnet 中打印对象?这主要用于调试目的。
我正在使用error
打印对象,但这会终止程序执行。
local obj = [
{
myKey: 2,
}];
error 'Printing' + std.toString(obj)
输出:
RUNTIME ERROR: Printing[{"myKey": 2}]
snippet:6:1-37
更好的方法来做到这一点?
为了跟进 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
}
]
对于后代,OP 提供了一个新函数来解决这个问题:std.trace("message", rest)。
[已过时,请参阅其他答案]
目前(截至 jsonnet 0.10)不幸的是没有。有计划将其包含在未来的版本中(此处发布:https ://github.com/google/jsonnet/issues/130 )。
人们使用错误(就像您在代码中显示的那样)或修改代码以仅输出他们想要的部分(它有多方便取决于您如何构建代码)。