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

为何wget -O命令获取的JSON文件仅为单行无换行?

问题原因及排查方向

核心原因:请求头差异导致服务器返回不同格式JSON

浏览器和wget发送的HTTP请求头存在明显区别,服务器会根据请求头返回适配的JSON格式:

  • 浏览器请求时会携带User-Agent(标识自身为浏览器)、Accept等头信息,服务器识别后返回带换行的格式化JSON,方便人工查看;
  • wget默认发送的请求头较为简单,服务器会默认返回无换行的紧凑格式JSON——这是多数API服务的优化策略,给程序返回紧凑格式可节省带宽。

其他可能的排查点

  • $requis变量内容不一致:检查脚本中$requis对应的URL,是否和浏览器地址栏的URL完全一致,比如是否多了?pretty=false这类控制JSON格式的参数;
  • 传输编码异常:如果服务器返回gzip压缩的JSON,虽然wget默认会自动解压,但少数情况下环境变量或配置异常可能导致解压失败,最终生成单行内容;
  • 注:日志参数-a仅用于追加日志,不会影响下载的JSON内容格式。

验证与解决方法

  1. 模拟浏览器请求头下载:给wget添加浏览器的请求头,强制服务器返回格式化JSON:
wget --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36" --header="Accept: application/json" -O /home/carlos/answer.json -a /home/carlos/logs/log_wget$hoje.log $requis
  1. 用curl对比测试:在服务器上执行curl命令,查看返回的JSON格式和响应头,确认问题根源:
curl -v $requis > test_curl.json
# 查看响应头里的Content-Type、Content-Encoding等字段,判断是否存在压缩或格式控制
  1. 校验$requis变量:执行echo $requis,将输出与浏览器地址栏的URL对比,确保无额外参数或拼写错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 02:22:43