如何在 jq 中检查 null 或 empty 并在 jq 转换中替换空字符串。
下面的 JSON 示例,这是 JQ
江青:
.amazon.items[] | select(.name | contains ("shoes")) as $item |
{
activeItem: .amazon.activeitem,
item : {
id : $item.id,
state : $item.state,
status : if [[ $item.status = "" or $item.status = null ]];
then 'IN PROCESS' ; else $item.status end
}
}
Run Code Online (Sandbox Code Playgroud)
JSON:
{
"amazon": {
"activeitem": 2,
"items": [
{
"id": 1,
"name": "harry potter",
"state": "sold"
},
{
"id": 2,
"name": "adidas shoes",
"state": "in inventory"
},
{
"id": 3,
"name": "watch",
"state": "returned"
},{
"id": 4,
"name": "Nike shoes",
"state": "in inventory"
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
如果状态为空或 Null,我想添加一个默认字符串“处理中”。
根据项目条件,使用下面的查询并从过滤结果中获取第一个对象。
code
.amazon.items[] | 选择(.name | 包含(“鞋子”))
code
预期输出:
{
"activeitem": 2,
"item": {
"id": 2,
"name": "adidas shoes",
"state": "in inventory",
"status": "IN PROCESS"
}
}
Run Code Online (Sandbox Code Playgroud)
这里的关键是使用|=:
.amazon.item.status |=
if . == null or . == ""
then "IN PROCESS"
else .
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4742 次 |
| 最近记录: |