composer.json报json decode error主因是bom头或中文注释等非法字符;应执行php -r "json_decode(file_get_contents('composer.json')) || die(json_last_error_msg());"定位错误,php 8.0+附带偏移量,或粘贴至jsonlint.com精确标出违规行与字符。

composer.json 里中文注释报错,99% 是文件带 BOM 头,不是语法写错了;真正能用的中文必须存为 UTF-8 无 BOM,且不能有 JSON 注释。
composer.json 报 JSON decode error 怎么快速定位非法字符
错误信息里不带行号,靠肉眼扫根本找不到问题在哪。别猜,用 PHP 原生解析器直接暴露真实位置:
- 终端执行
php -r "json_decode(file_get_contents('composer.json')) || die(json_last_error_msg());"—— PHP 8.0+ 会附带偏移量,比如Parse error on line 12 - 粘贴内容到 jsonlint.com,它能标出具体哪一行、哪个字符违规(常见如 BOM、中文全角冒号、末尾逗号、
//注释) - VS Code 打开后确认右下角语言模式是
JSON(不是 Plain Text),红色波浪线处就是语法破绽点
为什么记事本/WPS/网页后台保存后必报错
Windows 记事本、WPS、某些 CMS 后台编辑器默认用 “UTF-8 with BOM” 或 GBK 编码保存,而 json_decode() 对开头的 EF BB BF(BOM)极度敏感,一读就崩。
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
- VS Code:右下角点击编码名 →
Save with Encoding→ 选UTF-8(注意不是UTF-8 with BOM) - Sublime Text:菜单
File → Save with Encoding → UTF-8,存完再看右下角是否显示UTF-8 - 命令行清除已有 BOM:
sed -i '1s/^\xEF\xBB\xBF//' composer.json(Linux/macOS),或 PowerShell:(Get-Content composer.json -Raw) -replace "\uFEFF", "" | Set-Content composer.json -Encoding UTF8
Git 提交后 CI 上崩了,怎么防住编码污染
本地没问题,CI 上报错?大概率是 Git 自动转码或构建机 locale 不一致,BOM 被悄无声息混进历史。
- 在
.gitattributes里加一行:composer.json text eol=lf encoding=utf-8,强制 Git 当作 UTF-8 文本处理 - CI 脚本开头加校验:
if ! [[ $(file -i composer.json) == *"charset=utf-8"* ]]; then echo "composer.json not UTF-8"; exit 1; fi - 禁用所有 JSON 格式化插件(尤其
JSON Beautifier),它可能把合法结构重排成非法格式(比如在对象末尾加逗号)
真正麻烦的不是改一个文件,而是团队里有人用记事本改完直接提交——那个 BOM 会固化在 Git 历史里,之后所有人 clone 下来都得手动清理。统一编辑器配置 + .gitattributes + CI 编码校验,三者缺一不可。










