You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用jq从JSON中提取URL列表?

问题描述

Microsoft Clarity 返回JSON格式数据,我已通过jq提取出以下JSON片段:

$ echo $JSON | jq '.[] | select(.metricName == "PopularPages") | .[]'
"PopularPages"
[
  {
    "url": "https://www.mslinn.com/blog/2023/09/14/boost.html",
    "visitsCount": "8"
  },
  {
    "url": "https://www.mslinn.com/blog/2021/02/11/javascript-named-arguments.html",
    "visitsCount": "8"
  },
  {
    "url": "https://www.mslinn.com/blog/2023/08/20/pytest.html",
    "visitsCount": "7"
  },
  {
    "url": "https://www.mslinn.com/blog/2022/01/10/wsl-backup.html",
    "visitsCount": "7"
  },
  {
    "url": "https://www.mslinn.com/av_studio/640-music21.html",
    "visitsCount": "5"
  },
  {
    "url": "https://www.mslinn.com/llm/4000-wsl.html",
    "visitsCount": "4"
  },
  {
    "url": "https://www.mslinn.com/blog/2021/04/28/buildah-podman.html",
    "visitsCount": "4"
  },
  {
    "url": "https://www.mslinn.com/blog/2020/10/27/installing-a-new-ssh-key-on-awc-ec2-with-user-data.html",
    "visitsCount": "3"
  },
  {
    "url": "https://www.mslinn.com/av_studio/570-ableton-push-standalone.html",
    "visitsCount": "3"
  },
  {
    "url": "https://www.mslinn.com/git/600-partial-clone.html",
    "visitsCount": "3"
  }
]

但我无法将上述JSON精简为每行一个的url值列表,预期效果如下:

https://www.mslinn.com/blog/2023/09/14/boost.html
https://www.mslinn.com/blog/2021/02/11/javascript-named-arguments.html
https://www.mslinn.com/blog/2023/08/20/pytest.html
https://www.mslinn.com/blog/2022/01/10/wsl-backup.html
https://www.mslinn.com/av_studio/640-music21.html
https://www.mslinn.com/llm/4000-wsl.html
https://www.mslinn.com/blog/2021/04/28/buildah-podman.html
https://www.mslinn.com/blog/2020/10/27/installing-a-new-ssh-key-on-awc-ec2-with-user-data.html
https://www.mslinn.com/av_studio/570-ableton-push-standalone.html
https://www.mslinn.com/git/600-partial-clone.html

原始JSON的结构如下:

[
    ...
    {
        "metricName": "PopularPages",
        "information": [
            {
                "url": "https://www.mslinn.com/blog/2023/09/14/boost.html",
                "visitsCount": "8"
            },
            {
                "url": "https://www.mslinn.com/blog/2021/02/11/javascript-named-arguments.html",
                "visitsCount": "8"
            },
            {
                "url": "https://www.mslinn.com/blog/2023/08/20/pytest.html",
                "visitsCount": "7"
            },
            {
                "url": "https://www.mslinn.com/blog/2022/01/10/wsl-backup.html",
                "visitsCount": "7"
            },
            {
                "url": "https://www.mslinn.com/av_studio/640-music21.html",
                "visitsCount": "5"
            },
            {
                "url": "https://www.mslinn.com/llm/4000-wsl.html",
                "visitsCount": "4"
            },
            {
                "url": "https://www.mslinn.com/blog/2021/04/28/buildah-podman.html",
                "visitsCount": "4"
            },
            {
                "url": "https://www.mslinn.com/blog/2020/10/27/installing-a-new-ssh-key-on-awc-ec2-with-user-data.html",
                "visitsCount": "3"
            },
            {
                "url": "https://www.mslinn.com/av_studio/570-ableton-push-standalone.html",
                "visitsCount": "3"
            },
            {
                "url": "https://www.mslinn.com/git/600-partial-clone.html",
                "visitsCount": "3"
            }
        ]
    }
]

请问应使用何种jq命令实现该需求?


解决方案

直接针对原始JSON结构,使用以下jq命令即可提取每行一个的URL列表:

echo $JSON | jq -r '.[] | select(.metricName == "PopularPages") | .information[].url'

命令说明:

  • -r:输出原始字符串,不带JSON格式的引号
  • .[]:遍历顶层数组中的每个元素
  • select(.metricName == "PopularPages"):筛选出metricName字段值为PopularPages的对象
  • .information[].url:遍历目标对象的information数组,逐个提取每个子对象的url字段值

如果是基于你已经提取出的JSON片段(包含"PopularPages"字符串和页面数组的结果),可以用以下命令处理:

echo $YOUR_EXTRACTED_JSON | jq -r '.[1][] | .url'

你的提取结果是一个包含两个元素的数组:第一个是字符串"PopularPages",第二个是页面对象数组,所以用.[1]定位到页面数组,再遍历每个对象提取url。


内容的提问来源于stack exchange,提问作者Mike Slinn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 17:05:56