我有以下json:

{
  "id": "jboss_data1",
  "DS1": {
    "policy_name": "CAT_LOCATION",
    "username": "PRODUCTION_1",
    "password_clear": "7bla1234",
  },
  "DS3": {
    "policy_name": "CAT_SRC",
    "username": "PRODUCTION_2",
    "password_clear": "foo7864",
  },
  "DS4": {
    "policy_name": "CAT_FOLDER",
    "username": "PRODUCTION_3",
    "password_clear": "123bar456",
  }
}

在bash中,我try 在username与我的变量匹配时提取password_clear值.

我试过像这样的东西

jq -r --arg user "${user_picked}" '.[]|select(.value.username=="$user").password_clear' file.json

(我也try 了很多不同的组合,但都没有成功……)

你能告诉我这个请求的正确句法吗?

问候

推荐答案

由于并非所有对象都有username字段,因此需要使用Optional Object Identifier-Index(?)作为.username?来捕获缺少的对象:

jq -r --arg user "PRODUCTION_1" \
  '.[] | select(.username? == $user).password_clear' file.json

输出:

7bla1234

关于您的try ,您使用的是.value,但这不是必需的,因为.[]可以很好地循环对象.

.value可以来自to_entries,用于将对象转换为键/值对,但同样,使用.[]要容易得多.

Json相关问答推荐

如何在Power BI中集成API和JSON数据后将数据转换为表?

SWIFT中的网络经理

由于无效的UTF-8开始字节0xa0,JSON被拒绝,但编码似乎有效

无法访问id的第三级json

Moshi:序列化 List 时出现问题

如何使用 SQL Server 将 json 存储为字符串的列分解/规范化为行和列?

如何从 json 中获取单个元素?

如果值不存在,则将值插入 JSON 数组

如何使用 React 从 NASA IMAGES API 中解构所需信息

在 json 嵌入的 YAML 文件中 - 使用 Python 仅替换 json 值

解析 JSON API 响应

如何在golang中获取 struct 的json字段名称?

使用 gson 反序列化对象的特定 JSON 字段

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

有必要清理 JSON 吗?

在 Django 1.9 中,使用 JSONField(本机 postgres jsonb)的约定是什么?

关于使用 $ref 的 JSON 模式

jQuery JSON 响应总是触发 ParseError

如何在spark 上将json字符串转换为数据帧

将多个值存储在json中的单个键中