json - jq json - 按键名称选择

标签 json select key command-line-interface jq

我正在使用 jq 尝试解析 AWS CLI 查询中的一些详细信息。
JSON 示例:

                    "Tags": [
                        {
                            "Key": "Name",
                            "Value": "db01"
                        },
                        {
                            "Key": "BackupResourceType",
                            "Value": "EC2"
                        },
                        {
                            "Key": "Role",
                            "Value": "db_edi01"
                        },
                        {
                            "Key": "OS",
                            "Value": "Ubuntu 18.04"
                        }
                    ],

我遇到的问题是这些标签值的顺序不一致。有没有办法可以选择 key=OS 的值而不是选择特定的数组值?

[.InstanceId、.State.Name、.Tags[1].Value、.Tags[0].Value 等]

感谢您的帮助!

最佳答案

也许最好的方法是使用 from_entries。例如。对于“操作系统”键:

.Tags | from_entries | .OS

更一般地说,但更详细地说,您可以选择:

.Tags | first( .[] | select(.Key == "OS") | .Value)

或者如果您担心指定的键不存在时的结果:

.Tags | first( .[] | select(.Key == "OS") // {} | .Value)

在没有看到完整示例的情况下,很难确切地说出最经济的表达方式是什么,但是结合您的示例,您可以使用以下内容:

[.InstanceId, .State.Name] +
 [.Tags | from_entries | (.OS, .Role)]

关于json - jq json - 按键名称选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75560114/

相关文章:

nhibernate - 防止 Fluent NHibernate 选择 n+1

sql - 子查询中两列的 Postgres where 子句

key - Hazelcast 分区的所有者和副本?该分区包含哪些键?

ruby-on-rails - 除了 id 之外的 Rails 外键

json - 如何在phpDocumentor 2中记录JSON参数和返回类型?

json - Safari 和 Chrome 不想 JSON.parse

json - 从node.js中的stack-overlfow api获取垃圾JSON

mysql - mysql group by 字段计算记录数

jquery - 带有 if/else 语句的 ESCAPE 键 - jQuery

javascript - 如何从 JSONStore 加载 extJS 网格中的数据?