Как распечатать в jsonnet?
Есть ли способ напечатать объекты в jsonnet? Это в основном для целей отладки.
я использую error
печатать объекты, но это останавливает выполнение программы.
local obj = [
{
myKey: 2,
}];
error 'Printing' + std.toString(obj)
Выходы:
RUNTIME ERROR: Printing[{"myKey": 2}]
snippet:6:1-37
Лучший способ сделать это?
3 ответа
Чтобы продолжить ответ Дэйва Каннингема, std.trace()
доступен с 0.11.0, он ведет себя как "крючок посередине", где его 1-й аргумент - это строка, которую вы хотите показать, 2-й - это то, что вы хотите вернуть.
Используя его для предоставленного примера:
$ 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).
Люди используют ошибки (как вы показали в коде) или изменяют код для вывода только той части, которую они хотят (насколько это удобно, зависит от того, как вы структурировали свой код).