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

CMD批处理如何遍历含数组的JSON对象查找指定键值

Windows CMD批处理提取JSON指定数组内键值的实现方案

jq是当前CMD环境下处理JSON可靠性最高的工具,之前调用失败基本是过滤路径写法、CMD转义没处理到位,按下面的步骤写即可正常运行。

前置准备

  • 下载Windows版本的jq.exe,放到批处理脚本同级目录,或者加入系统PATH环境变量,保证CMD可直接调用jq命令

可直接复用的批处理代码

@echo off
setlocal enabledelayedexpansion

:: 按需修改以下三个配置项即可
set "JSON_PATH=your_file.json"
set "TARGET_ARRAY_NAME=array1"
set "TARGET_OBJECT_KEY=1"

:: 遍历提取目标值
for /f "delims=" %%val in ('jq -r ".%TARGET_ARRAY_NAME%[].\"%TARGET_OBJECT_KEY%\"" "%JSON_PATH%" 2^>nul') do (
    set "match_val=%%val"
    :: 取第一个匹配值就直接跳出循环,要拿所有匹配值就删掉下面这行
    goto :output
)

:output
echo 提取结果:%match_val%
endlocal

逻辑说明

  • 核心jq过滤规则为.目标数组名[].目标键名:[]语法会自动遍历指定数组下的所有对象,逐一提取对应键的值,不需要手动写循环遍历数组逻辑
  • 参数-r用于输出原始字符串,自动去掉JSON字符串值自带的包裹双引号,拿到的结果可以直接在批处理里使用
  • 针对你给出的示例JSON,上述代码运行后会直接返回预期值xx;如果需要获取数组内所有该键的对应值,删掉循环内的goto :output语句,在循环体中直接处理%%val即可

注意事项

  • CMD环境下调用jq时,键名的双引号需要用反斜杠转义;for循环内的重定向符号>需要加^转义,避免被CMD提前解析为命令重定向
  • 不要尝试用原生批处理的字符串截取、正则匹配手写JSON解析逻辑,遇到转义字符、嵌套结构、值带特殊符号的场景必然出现解析错误,jq的JSON解析完全遵循官方规范,不存在兼容问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 18:22:21