首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从json文件中提取值以创建清单的jq查询

从json文件中提取值以创建清单的jq查询
EN

Stack Overflow用户
提问于 2022-05-05 06:56:35
回答 1查看 95关注 0票数 0

给定此输入小样本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "_format_version": "1.1",
  "_workspace": "test",
  "services": [
    {
      "connect_timeout": 60000,
      "host": "host-name-test.com",
      "name": "name-of-service",
      "path": "/test/oauthpass",
      "port": 777,
      "protocol": "http",
      "read_timeout": 1000,
      "retries": 1,
      "write_timeout": 1000,
      "routes": [
        {
          "hosts": [
            "Google.com"
          ],
          "name": "com.testing.active.oauth",
          "methods": [
            "POST"
          ],
          "paths": [
            "/vendors/otest/pass/?$"
          ],
          "path_handling": "v8",
          "preserve_host": false,
          "protocols": [
            "https"
          ],
          "regex_priority": 0,
          "strip_path": true,
          "https_redirect_status_code": 426,
          "request_buffering": true,
          "response_buffering": true
        }
      ]
    }
}

试图从数据中获取一个列表,并提取某些值,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
host-name-test.com, Google.com, POST, HTTPS

到目前为止,我执行的命令是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cat /tmp/petecar.json | jq -r ' .services[] | .routes[] | ( .hosts[] + "/" + .paths[]) ' | more

但是我无法访问服务下的值,请提供一些如何获取值的示例

EN

回答 1

Stack Overflow用户

发布于 2022-08-14 01:10:50

routes有一个数组值,因此不能与字符串连接。可以使用join将该数组转换为单个字符串:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jq -r '.services[] | .host + " " + (.routes[].hosts | join(","))'

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
host-name-test.com Google.com

或者,使用串内插自动将任何值序列化到其字符串表示形式中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jq -r '.services[] | "\(.host) \(.routes[].hosts)"'

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
host-name-test.com ["Google.com"]

可以组合join和string插值,给出第一个命令的相同输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jq -r '.services[] | "\(.host) \(.routes[].hosts|join(","))"'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72129329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文