如何在jq中的多组数组中使用try-catch

  • 本文关键字:数组 try-catch jq jq
  • 更新时间 :
  • 英文 :


json示例:

{
"data": {
"sub1": [
{
"sub2": {
"sub3": 32,
"steps": []
}
},
{
"sub2": {
"sub3": 21,
"steps": [
{
"task": [
{
"active": 223,
"activel": 21
}
]
}
]
}
},
{
"sub2": {
"sub3": 234,
"steps": [
{
"task": [
{
"active": 23,
"activel": 2
}
]
}
]
}
},
{
"sub2": {
"sub3": 32,
"steps": [
{
"task": []
}
]
}
}
]
}
}

我试过的:

.data.sub1[]| [try(.sub2.steps[].task[].active) catch "error"]

在jqplay中:https://jqplay.org/s/U2mWmdkhsm5

这是我得到的最接近的一个,但我需要的是它为数组中不存在活动的每个部分写错误。像这样:

"error"
223
23
"error"

这似乎是一个简单的问题,但我不知道如何让它发挥作用,所以提前感谢您的回答。

您可以使用替代运算符//:

.data.sub1[] | .sub2.steps[].task[].active // "error"

参见操场。

最新更新