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

Python脚本接收JSON遇json.decoder.JSONDecodeError问题求助

问题解决:JSON传递与格式转换

一、修复PowerShell中的JSON语法与传递问题

1. 修正JSON语法

你当前PowerShell代码里的JSON存在冗余外层大括号,导致JSON本身语法无效。正确的JSON结构应为:

{
    "Items": [
        {
            "Name": "baz",
            "File": "\\\\baz\\baz\\baz baz\\baz baz\\baz\\baz.xls"
        },
        {
            "Name": "bar",
            "File": "\\\\bar\\bar\\bar bar\\bar bar\\bar\\bar.csv"
        },
        {
            "Name": "foo",
            "File": "\\\\foo\\foo\\foo foo\\foo foo\\foo\\foo.csv"
        }
    ]
}

2. 正确传递JSON参数

PowerShell直接传递带空格的字符串会被分割为多个参数,导致Python收到截断、格式错误的内容。推荐两种可靠传递方式:

方式1:用双引号包裹参数

$json = @"
{
    "Items": [
        {
            "Name": "baz",
            "File": "\\\\baz\\baz\\baz baz\\baz baz\\baz\\baz.xls"
        },
        {
            "Name": "bar",
            "File": "\\\\bar\\bar\\bar bar\\bar bar\\bar\\bar.csv"
        },
        {
            "Name": "foo",
            "File": "\\\\foo\\foo\\foo foo\\foo foo\\foo\\foo.csv"
        }
    ]
}
"@

& $Python $Script "$json"

方式2:通过管道传递(适合长JSON)

PowerShell代码:

$json = @"
{
    "Items": [
        {
            "Name": "baz",
            "File": "\\\\baz\\baz\\baz baz\\baz baz\\baz\\baz.xls"
        },
        {
            "Name": "bar",
            "File": "\\\\bar\\bar\\bar bar\\bar bar\\bar\\bar.csv"
        },
        {
            "Name": "foo",
            "File": "\\\\foo\\foo\\foo foo\\foo foo\\foo\\foo.csv"
        }
    ]
}
"@

$json | & $Python $Script

二、Python代码实现目标格式转换

以下是兼容参数传递和管道传递的完整代码,包含JSON解析与格式转换逻辑:

import sys
import json

def convert_json(input_data):
    parsed = json.loads(input_data)
    # 将Items数组转换为Name为键、File为值的字典
    return {item["Name"]: item["File"] for item in parsed["Items"]}

def main():
    # 读取输入:优先读取命令行参数,否则读取标准输入
    if len(sys.argv) > 1:
        input_data = sys.argv[1]
    else:
        input_data = sys.stdin.read()
    
    if not input_data:
        print("无输入数据")
        return
    
    try:
        converted_data = convert_json(input_data)
        # 输出格式化后的目标JSON
        print(json.dumps(converted_data, indent=2))
    except json.JSONDecodeError as e:
        print(f"JSON解析错误: {e}")
    except KeyError as e:
        print(f"JSON结构异常,缺失必要键: {e}")

if __name__ == "__main__":
    main()

三、验证输出结果

运行后,Python脚本会输出符合要求的格式:

{
  "baz": "\\\\baz\\baz\\baz baz\\baz baz\\baz\\baz.xls",
  "bar": "\\\\bar\\bar\\bar bar\\bar bar\\bar\\bar.csv",
  "foo": "\\\\foo\\foo\\foo foo\\foo foo\\foo\\foo.csv"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 20:12:06