jq:填充字段存在的对象床边
jq: populate object bedides of field exists
我正在使用这个过滤器:
map({
name,
deceased: (.deceased? // empty | split(" ") | first | strptime("%Y/%m/%d") | strftime("%F"))
})
输入对象是:
{
"name": "name1",
"birth": "1950/05/05",
"deceased": "1982/05/19"
}
{
"name": "name2",
"birth": "1982/05/19"
}
我得到:
[
{
"name": "name1",
"deceased": "1982-05-19"
}
]
我需要得到:
[
{
"name": "name1",
"deceased": "1982-05-19"
},
{
"name": "name2"
}
]
有什么想法吗?
您可以使用 has
测试是否存在
map(
{name} +
if has("deceased")
then {deceased: (.deceased | strptime("%Y/%m/%d") | strftime("%F"))}
else {}
end
)
[
{
"name": "name1",
"deceased": "1982-05-19"
},
{
"name": "name2"
}
]
如果 .deceased
只能作为字符串存在,那么这将是等价的:
map(
{name, deceased}
| .deceased |= (strings | strptime("%Y/%m/%d") | strftime("%F"))
)
[
{
"name": "name1",
"deceased": "1982-05-19"
},
{
"name": "name2"
}
]
我正在使用这个过滤器:
map({
name,
deceased: (.deceased? // empty | split(" ") | first | strptime("%Y/%m/%d") | strftime("%F"))
})
输入对象是:
{
"name": "name1",
"birth": "1950/05/05",
"deceased": "1982/05/19"
}
{
"name": "name2",
"birth": "1982/05/19"
}
我得到:
[
{
"name": "name1",
"deceased": "1982-05-19"
}
]
我需要得到:
[
{
"name": "name1",
"deceased": "1982-05-19"
},
{
"name": "name2"
}
]
有什么想法吗?
您可以使用 has
map(
{name} +
if has("deceased")
then {deceased: (.deceased | strptime("%Y/%m/%d") | strftime("%F"))}
else {}
end
)
[
{
"name": "name1",
"deceased": "1982-05-19"
},
{
"name": "name2"
}
]
如果 .deceased
只能作为字符串存在,那么这将是等价的:
map(
{name, deceased}
| .deceased |= (strings | strptime("%Y/%m/%d") | strftime("%F"))
)
[
{
"name": "name1",
"deceased": "1982-05-19"
},
{
"name": "name2"
}
]