【发布时间】:2016-02-24 19:49:11
【问题描述】:
我有以下 JSON 对象
{"color": "red", "shapes": [ "square", "triangle" ]}
我想通过以下条件使用jq 验证 JSON 对象:
- color 的值为“red”
- 形状不包含值“圆形”
返回的结果应该是 true 或 false。
我有 2 个 jq 命令来验证这两个条件,但我不确定如何将其组合成 1 个表达式:
json='{"color": "red", "shapes": [ "square", "triangle" ]}'
echo "$json" | jq '.["color"] | test("red")'
echo "$json" | jq 'any(.shapes[]; contains("round"))|not'
任何指点或帮助将不胜感激。
【问题讨论】:
-
顺便说一句,考虑
jq <<<"$json"而不是echo "$json" | jq,或者--如果您希望与POSIX sh 兼容而不使您的代码不必要地脆弱--printf '%s\n' "$json" | jq。有关echo命令的详细信息,请参阅pubs.opengroup.org/onlinepubs/009604599/utilities/echo.html,避免它的原因应该是相当明显的。 -
@CharlesDuffy 有趣,tnx 提示