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

如何在Bash中使用jq从JSON响应提取mxa.mailgun.org

使用jq从Mailgun API响应中提取指定MX记录值

看起来你想从Mailgun API返回的JSON响应里提取mxa.mailgun.org这个值,我来帮你调整jq命令,先理清楚问题所在,再给出可行的方案。

首先看一下你的API返回JSON的核心结构(简化后方便理解):

{
  "domain": {...},
  "message": "Domain DNS records have been updated",
  "receiving_dns_records": [
    {
      "record_type": "MX",
      "value": "mxa.mailgun.org"
    },
    {
      "record_type": "MX",
      "value": "mxb.mailgun.org"
    }
  ]
}

你之前尝试的两个命令存在一些问题:

  • 第一个命令.[] | {receiving_dns_records: .[]}会遍历JSON顶级的所有字段(domain、message、receiving_dns_records),然后把每个字段的内容拆分成数组元素,这会输出大量无关内容,完全偏离了提取目标值的需求。
  • 第二个命令.[] | {receiving_dns_records: .[value]}不仅同样错误地遍历了顶级字段,还存在语法错误——.value才是访问字段的正确方式,.[]是遍历数组,这里混用导致逻辑混乱。

正确的jq命令方案

方案1:直接通过数组索引提取(适合确定目标值位置的情况)

如果确定mxa.mailgun.org是receiving_dns_records数组的第一个元素,直接用索引定位即可:

curl -X PUT -s --user 'api:key-1659e3c0faff2c4e96e4' -G https://api.mailgun.net/v3/domains/leadereign.co.uk/verify -d skip=0 -d limit=3 | jq '.receiving_dns_records[0].value'

执行后会输出带双引号的字符串:

"mxa.mailgun.org"

如果想要不带引号的纯文本结果,加上-r(raw output)参数:

curl -X PUT -s --user 'api:key-1659e3c0faff2c4e96e4' -G https://api.mailgun.net/v3/domains/leadereign.co.uk/verify -d skip=0 -d limit=3 | jq -r '.receiving_dns_records[0].value'

方案2:通过筛选条件精准提取(适合不确定位置的情况)

如果不确定目标值在数组中的位置,或者想确保提取的是符合特定条件的记录(比如MX类型且值为目标字符串),可以用select()筛选:

curl -X PUT -s --user 'api:key-1659e3c0faff2c4e96e4' -G https://api.mailgun.net/v3/domains/leadereign.co.uk/verify -d skip=0 -d limit=3 | jq -r '.receiving_dns_records[] | select(.value == "mxa.mailgun.org") | .value'

或者更严谨地同时筛选记录类型和值:

curl -X PUT -s --user 'api:key-1659e3c0faff2c4e96e4' -G https://api.mailgun.net/v3/domains/leadereign.co.uk/verify -d skip=0 -d limit=3 | jq -r '.receiving_dns_records[] | select(.record_type == "MX" and .value == "mxa.mailgun.org") | .value'

命令解释

  • .receiving_dns_records:直接定位到JSON顶级的数组字段
  • []:遍历数组中的每一个元素
  • select(...):筛选出满足括号内条件的元素(比如值等于mxa.mailgun.org,或者记录类型是MX)
  • .value:从筛选后的元素中提取value字段的内容
  • -r:让jq输出原始字符串,去掉默认的双引号

这样就能准确提取到你需要的mxa.mailgun.org值了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:03:31