json - 用jq解析json文件
问题描述
{
"name": "ford",
"availableVersions": [
{
"version": 111,
"count": 3
},
{
"version": 122,
"count": 2
},
{
"version": 133,
"count": 3
},
{
"version": 144,
"count": 1
}
],
"RealVersion": 155
}
{
"name": "bmw",
"availableVersions": [
{
"version": 244,
"count": 1
},
{
"version": 255,
"count": 3
} ],
"RealVersion": 120
}
我现在有这个 demo.json 文件if (name == 'ford')
(名称可以是一个变量)我想获取所有版本,count != 3
如果所有版本count == 3
我想获取福特的 RealVersion,那么在这种情况下输出应该是。
EXPECTED OUTPUT = [122 144 ]
我正在使用 jq 工具来解析 json 文件
现在如果所有版本数 ==3
{
"name": "ford",
"availableVersions": [
{
"version": 111,
"count": 3
},
{
"version": 122,
"count": 3
},
{
"version": 133,
"count": 3
},
{
"version": 144,
"count": 3
}
],
"RealVersion": 155
}
{
"name": "bmw",
"availableVersions": [
{
"version": 244,
"count": 1
},
{
"version": 255,
"count": 3
} ],
"RealVersion": 120
}
现在在这种情况下,所有版本的计数 == 3 所以现在我想获得真实版本,即 155
EXPECTED OUTPUT SHOULD BE 155
谁能帮我这个?
解决方案
以下程序在使用 -n 命令行选项调用时,在两种情况下都会产生预期的输出:
inputs
| .RealVersion as $RealVersion
| select(.name == "ford")
| .availableVersions
| map(select(.count != 3))
| if length > 0 then map(.version)
else $RealVersion
end
具体来说,在第一种情况下,它会生成一个 JSON 数组,在第二种情况下,会生成.ReadVersion
.