如何解决复制子孙的值如果存在,否则使用null
给出JSON:
{
"id": 1,"coding": [{
"code": 1234,"system": "target"
},{
"code": 5678,"system": "other"
}]
}
我可以在“系统”为“目标”的情况下选择“代码”的值,因此:
{id: .id} + {"code": .coding[]? | select(.system=="target").code}
产生:
{
"id": 1,"code": 1234
}
但是,如果“系统”值为“目标”的对象在数组中不存在,则:
{
"id": 1,"coding": [{
"code": 5678,"system": "other"
}]
}
我想要以下结果:
{
"id": 1,"code": null
}
但是,我上面的jq产生一个空对象。我该如何实现自己想要的?
解决方法
select
的内置收益率empty
除非其输入中至少有一个满足给定的标准,并且empty
本身消耗几乎任何东西。因此结果为空。
相反,请使用内置的first
在code
为system
的对象的target
值和null
之间进行交替。这还涵盖了其他一些您没有明确提及的情况。
{ id,code: first((.coding[]? | select(.system == "target") .code),null) }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。