Я использую следующую команду JQ для фильтрации JSON. Мое требование - отфильтровать сообщение JSON, если ожидаемый узел присутствует. Или, ничего не делайте. Следовательно, я использую if, elif, ....JSON JQ if without else
sed -n "s/.*Service - //p" $1/response.log* |
jq "if (.requests | length) != 0 then .requests |= map(select(.id == \"123\"))
elif (.result | length) != 0 then .result |= map(select(.id== \"123\"))
else " " end" > ~/result.log
Похоже, что здесь обязательно. Я не хочу ничего делать внутри блока else. В любом случае, я могу игнорировать другие или просто печатать некоторые whitespce внутри другого.
В этом случае он печатает двойные кавычки «» в файле результатов.
Upvote для окончательного предложения. – turiyag
как использовать оператор if для значений типа массива. Например: . [] | {Result ": if (.foo == null) then [] end} [{" foo ": null," bar ":" менее интересные данные "}, {" foo ":" null "," bar ":" less interesting data "}] – devanathan
Пожалуйста, задайте новый вопрос SO. – peak