You need to enable JavaScript to run this app. 使用curl调用Bitbucket v1.0 API获取json文件时返回内容被lines封装,如何拿到原始json?
优惠活动
大模型
产品
解决方案
定价
更多

使用curl调用Bitbucket v1.0 API获取json文件时返回内容被lines封装,如何拿到原始json?

问题根因

你当前请求用的是browse路径的接口,这个接口是Bitbucket给前端代码预览页面设计的,返回的本来就是带分页、行号的结构化封装数据,从设计上就不提供原始文件流输出,所以才会出现外层嵌套lines、isLastPage这类额外字段的情况。

调整方法

更换正确的原始文件端点

把请求路径里的browse替换成raw——这是Bitbucket v1.0 API专门用来拉取仓库文件原始内容的端点,返回的就是和仓库里存储完全一致的纯文件内容,不会附带任何多余的元数据封装。

按需指定文件所在的分支

如果目标文件不在仓库默认分支上,要在请求URL后面拼上at查询参数,指定要拉取的分支、标签或者提交哈希,避免拉到默认分支上的旧版本文件。

去掉多余的请求头

原来请求里带的Content-Type: application/json是给POST、PUT这类带请求体的接口用的,GET请求拉文件的时候带这个头完全多余,还可能让接口误判返回格式,直接删掉就行。

可直接复用的curl命令
curl -k -s -X GET \
  -H "Authorization: Bearer xyxyxyz" \
  "https://code.somecompany.corp/bitbucket/rest/api/1.0/projects/<projectname>/repos/davinci-reviewer-list/raw/mapfile.json?at=refs/heads/main" \
  --output mapfile.json
注意事项
  • 别想着从browse接口的返回结果里拼lines数组的text字段还原文件,这种方式既要处理特殊字符转义、换行还原的问题,碰到超过单页大小的大文件时,还会因为接口默认分页截断导致内容不全,没必要折腾。
  • 如果目标文件就在仓库默认分支上,直接把URL里的?at=refs/heads/main参数删掉就行,接口会自动从默认分支拉取。
  • 拉取完成后直接cat查看文件,内容就是你预期的纯JSON结构,没有外层的封装字段。

内容的提问来源于stack exchange,提问作者Victor.Bbb

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 21:06:00