PowerShell解析JSON文件触发ArgumentException错误求助
解决JSON解析失败(Invalid object passed in, ':' or '}' expected)的问题
以下是针对这个错误的具体排查和修复步骤:
检查隐藏字符与编码问题
这类错误常源于文件里的不可见控制字符或编码异常:- 用PowerShell查看文件十六进制内容,排查异常字符:
Get-Content cleantest2.json -Raw | Format-Hex - 如果发现UTF-8 BOM(开头的
EF BB BF),重新保存为无BOM的UTF-8文件:Get-Content cleantest2.json -Raw | Out-File -FilePath cleantest2-fixed.json -Encoding utf8NoBOM
再用新文件执行解析命令。
- 用PowerShell查看文件十六进制内容,排查异常字符:
排查JSON语法隐性错误
在线格式化工具会自动修复小问题,但本地解析器更严格,重点检查:- 字符串中的未转义双引号:比如
"content: "test""要改成"content: \"test\"" - 数组/对象末尾的尾随逗号:比如
["a", "b",]或{"key": "val",}都是无效语法 - 键名是否用双引号包裹:JSON要求所有键必须是双引号字符串,
{name: "foo"}是错误的,必须写成{"name": "foo"}
- 字符串中的未转义双引号:比如
用Test-Json定位错误位置
PowerShell的Test-Json命令能精准指出语法错误的位置:Get-Content cleantest2.json -Raw | Test-Json -ErrorAction Stop执行后会返回错误行号和具体位置,方便快速修复。
修复ConvertTo-Json的生成问题
如果这个JSON是用PowerShell的ConvertTo-Json生成的,注意默认深度限制(仅2层),嵌套层级过深会导致内容被截断,生成无效JSON。解决方法是指定足够的深度:$yourObject | ConvertTo-Json -Depth 10 | Out-File cleantest2-fixed.json -Encoding utf8NoBOMPython解析的错误定位
用Python代码捕获解析异常,获取详细错误信息:import json with open('cleantest2.json', 'r', encoding='utf-8') as f: try: data = json.load(f) except json.JSONDecodeError as e: print(f"错误行号:{e.lineno},位置:{e.pos},原因:{e.msg}")根据输出定位并修复语法问题。
内容的提问来源于stack exchange,提问作者Alex Jokerst
相关产品推荐
相关产品推荐

