我有这样一种json:

[
    {
        "source": 
        {
            "file": "test",
            "baz": "now"
        }
    },
    {
        "source": {
            "dev": "foo"
        }
    },
    
    {
        "source": {
            "bar": "bar"
        }
    }
]

我想要一份filedev的所有值的列表.因此,上述预期结果应该是:["test", "foo"]

我被困在这里的某个地方:

.[].source | select(.file? or .dev?)

但这就产生了完整的物体.如何只访问属性值比??

推荐答案

您可以使用.source | .file, .dev.source["file", "dev"]同时遍历到.file.dev,然后使用values(而不是?)过滤掉空值.

map(.source | .file, .dev | values)
# or
map(.source["file", "dev"] | values)
[
  "test",
  "foo"
]

Json相关问答推荐

将嵌套的json中的字符串强制转换为数字

如何使用JQ有条件 Select 值

如何使用JQ将JSON字符串替换为解析后的类似功能?

Vegalite中分组条形图中的偏移量问题

NiFi QueryRecord处理器- Select 可选的JSON属性

Jolt-Json转换:通过引用标识符(而不是索引)设置值

在linux控制台中解析json字符串的最简单方法是什么?

使用 JOLT 将日期格式转换为 JSON

如何使NiFi将数据库单列中的多个值转化为Solr索引中的数组?

在 CodePipeline 中调用 lambda 时传递用户参数

Oracle json 对象的最后一个值不在引号中

将请求中的数据推送到数组中

JOLT - 如果对象内部存在键,则将对象移动到数组

如何从字符串中创建一个逗号分隔的列表,由 API 中的 JSON 对象内的编号空格分隔?

在Flutter 中将 map 的 Json 转换为 list

可以通过 POST 使用 EventSource 传递参数的服务器发送事件 (SSE)

直接从 Java 中的模型类创建 JSON 对象

在 JSON.stringify() 的输出中隐藏空值

如何将 mysqli 结果转换为 JSON?

jq:按属性分组和键