json - 从嵌套的 json 中获取价值 - Bash
问题描述
我环顾四周,但找不到任何有帮助的东西,这是我的问题,我有一个 bash 脚本,它可以进行 curl 查询并获取 json,如下所示:
{
"user1": {
"email": "email1@email.cccc",
"shell": "/usr/local/bin/bash",
"status": "ACTIVE",
"userId": "user1",
"homeDir": "/home/user1",
"unixUid": 123456,
"accesses": [
"computer1"
],
"personId": 1234,
"isPrimary": true,
"projectGroupIds": [
"bigproj"
],
"primaryProjectGroupId": "bigproj"
},
"user2": {
"email": "email2@email.cccc",
"shell": "/usr/local/bin/bash",
"status": "ACTIVE",
"userId": "user2",
"homeDir": "/home/user2",
"unixUid": 9876564,
"accesses": [
"computer1"
],
"personId": 5678,
"isPrimary": true,
"projectGroupIds": [
"smallporj"
],
"primaryProjectGroupId": "smallproj"
...
我需要做的是创建一个列表,其中包含:
UserId: user1 email: email1@email.cccc
UserId: user2 email: email2@email.cccc
UserId: user3 email: email3@email.cccc
...
我的问题是用户名密钥基本上总是在变化并且它没有固定密钥名称。最重要的键类型是:
jq -c 'to_entries[] | [.key, (.value|type)]'
["meta","object"]
["body","object"]
那么创建一个需要与另一个列表进行比较的列表的最佳方法应该是什么?提前致谢。
解决方案
这对你有用吗?
jq -c 'to_entries[] | "UserId: " + .key + " email: " + .value.email '
推荐阅读
- bash - 根据日期解析 access.log
- algorithm - 比较两个不同字典中的值
- javascript - 如何将ajax代码转换为django中的vue.js axios方法
- python - Pandas/Matplotlib:如何更改 x 轴的比例
- ios - UIStackView 中的 UITableView - 平滑展开和折叠动画
- docker-compose - 您无权访问此资源 - docker compose(我无法访问应用程序页面)
- spring-data-rest - Spring Data Rest 对象链接不适用于包含空间的关联 uri
- julia - Julia: How to use the @assert macro with a struct? @with_kw vs Base.@kwdef
- image - 如何在屏幕中选择图像并使用 kivy 将其显示在另一个屏幕上?
- android - 使用 tflite 时,“String”类型不是“index”类型“int”的子类型 - 颤振