gpt4 book ai didi

json - "Ternary logic"返回值 : foo, bar 或错误

转载 作者:行者123 更新时间:2023-12-03 23:28:04 29 4
gpt4 key购买 nike

我有两种不同的 JSON 结构可以从中检索特定的对象值,基本上是这样的

{
"one": {
"foo": {
"bar": "baz"
}
}
}

还有一个这样的
{
"two": {
"foo": {
"bar": "qux"
}
}
}

我想退回 bar两种情况下的值加上额外的返回变量 error如果两种情况都不是 1 - baz - 也不是情况 2 - qux - 匹配任何内容(即匹配 null )。

仅使用 jq 1.6 有没有一种简单的方法可以做到这一点?

更新:
以下是实际 JSON 文件的片段:
/* manifest.json, variant A */
{
"browser_specific_settings": {
"gecko": {
"id": "{95ad7b39-5d3e-1029-7285-9455bcf665c0}",
"strict_min_version": "68.0"
}
}
}

/* manifest.json, variant B */
{
"applications": {
"gecko": {
"id": "j30D-3YFPUvj9u9izFoPSjlNYZfF22xS@foobar",
"strict_min_version": "53.0"
}
}
}

我需要 id值(*gecko.id 可以这么说)或 error如果没有:
{95ad7b39-5d3e-1029-7285-9455bcf665c0}
j30D-3YFPUvj9u9izFoPSjlNYZfF22xS@foobar
error

最佳答案

您可以使用如下过滤器,它可以与您提供的示例 JSON 内容一起使用

jq '.. | if type == "object" and has("id") then .id else empty end'

现场观看 jqplay - VariantAjqplay - VariantB

备注 : 这只会得到 .id 的值当它存在时,请参阅其他答案( oguz ismail's )以显示 error当对象不包含必填字段时。

关于json - "Ternary logic"返回值 : foo, bar 或错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57571424/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com