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

Windows 10环境下Curl无法识别JSON数组参数问题求助

解决Windows CMD中Curl无法识别JSON数组参数的问题

你在Windows 10 CMD里用curl发送HTTPS POST请求时遇到的JSON数组识别问题,核心原因是CMD对引号、特殊字符的转义逻辑和类Unix终端完全不同,再加上命令里的参数使用冲突,导致curl没法正确解析你的请求数据。下面给你一步步梳理解决方案:

问题根源拆解

  1. 参数冲突:你同时用了--data-urlencode和-d,这俩都是用来传递POST数据的参数,同时使用会让curl解析逻辑混乱。
  2. CMD引号转义规则:CMD里的双引号"必须用^转义,而JSON本身大量依赖双引号,直接写会被CMD当成命令边界,导致JSON被截断或解析错误。
  3. 不完整的JSON结构:你的命令里JSON数组没写完(最后是Fulham Palac...),这也会让第三方API无法正常解析请求。

修正后的完整命令示例

下面是调整后的命令,解决了所有问题:

curl -u "username:x" -X POST -k -H "Accept:application/json" -H "Content-Type:application/x-www-form-urlencoded" --data-urlencode "envelope_documents=[{^"document_title^":^"Test Contract^",^"document_template_fingerprint^":^"template_id^",^"document_merge_fields^":[{^"field_id^":16012217,^"field_value^":^"Dimitrios Efthymiou^"},{^"field_id^":16012218,^"field_value^":^"Fulham Palace^"}]}]"

关键调整说明

  • 移除冲突参数:只保留--data-urlencode,它会自动处理URL编码,完美适配application/x-www-form-urlencoded类型的请求。
  • 转义JSON双引号:把JSON里的每一个"都替换成^",这样CMD就不会把它们当成命令结束符,能完整把JSON传递给curl。
  • 补全JSON结构:把未完成的字段内容补全,确保所有大括号、方括号都闭合,保证JSON格式合法。

更省心的替代方案:用文件传递数据

如果JSON内容复杂,手动转义引号太麻烦,可以把JSON内容存到一个文本文件里(比如payload.txt),然后让curl读取文件内容:

curl -u "username:x" -X POST -k -H "Accept:application/json" -H "Content-Type:application/x-www-form-urlencoded" --data-urlencode "envelope_documents@payload.txt"

payload.txt里直接写正常的JSON即可:

[{"document_title":"Test Contract","document_template_fingerprint":"template_id","document_merge_fields":[{"field_id":16012217,"field_value":"Dimitrios Efthymiou"},{"field_id":16012218,"field_value":"Fulham Palace"}]}]

这种方式不用处理CMD的转义问题,出错概率低很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:30:12