使用Azure DevOps REST API创建分支及提交JSON文件的问题求助
解决方案:程序化创建分支并添加setting.json文件的问题处理
修复Newtonsoft.Json.JsonReaderException错误
你用Initial commit方式添加setting.json并指定contentType: application/json时触发这个错误,核心原因是平台API要求JSON类型文件的内容必须是Base64编码后的字符串,而非直接传入原始JSON文本。
解决步骤:
- 读取本地
setting.json的原始内容 - 将内容转换为Base64编码格式
- 在API请求中把
content字段设为这个Base64字符串,同时保留contentType: "application/json"的设置
示例代码(以GitHub API场景为例):
import base64 # 读取本地文件内容 with open("setting.json", "r", encoding="utf-8") as f: raw_content = f.read() # 转换为Base64编码 encoded_content = base64.b64encode(raw_content.encode()).decode() # 构造创建文件的请求 payload payload = { "message": "Initial commit: Add setting.json", "content": encoded_content, "branch": "your-new-branch", "content_type": "application/json" }
绕过本地文件路径限制的替代方案
官方API不支持直接传入本地文件路径,除了上述Base64编码方案,还有两种实用思路:
- 先建空分支,再用文件更新接口上传内容
- 先从master分支创建新分支
- 调用文件创建/更新接口,传入Base64编码后的内容完成上传,无需依赖Initial commit方式
- 用Git命令行配合脚本完成操作
绕开API的限制,直接通过Git命令完成分支创建、文件提交,再调用API发起PR:# 从master切换并创建新分支 git checkout -b your-new-branch # 复制本地setting.json到仓库目录(如果不在同一目录) cp /local/path/setting.json ./ # 提交并推送分支 git add setting.json git commit -m "Add setting.json" git push origin your-new-branch
额外注意事项
- 确保API请求拥有仓库的写入权限
- 原始JSON内容需保证格式合法,避免因语法错误导致编码后仍触发异常
- 不同代码托管平台的API参数略有差异,比如GitLab无需显式指定
content_type,传入Base64内容即可
内容的提问来源于stack exchange,提问作者nishant mittal
相关产品推荐
相关产品推荐

