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

如何将boto3输出保存为JSON文件并解决解析及u前缀问题

解决boto3输出JSON文件带u前缀及解析报错问题

嘿,这个问题我之前也碰到过,来给你捋清楚怎么搞定!

问题根源

你现在的写法是用print response把boto3返回的Python字典直接输出到文件,这其实输出的是Python对象的字符串表示(repr格式),不是标准的JSON:

  • 在Python 2里,unicode类型的字符串会显示为u'xxx',这完全不符合JSON的语法规范;
  • 这种格式的内容用json.load解析时,自然会抛出语法错误,因为JSON不认u前缀,也不认可Python式的字典写法。

正确解决方案

别用sys.stdout重定向+print这种方式,直接用Python的json模块把response序列化成标准JSON写入文件,一步到位:

修改后的完整代码:

#!/bin/python
import boto3
import json

client = boto3.client('iam')
response = client.get_account_authorization_details()

# 用json.dump直接生成标准JSON文件
with open('output.json', 'w') as output_file:
    json.dump(response, output_file, indent=2)  # indent参数可选,让JSON更易读

为什么这样可行?

  • json.dump会自动把Python的字典/列表转换成严格符合JSON规范的字符串,自动处理unicode类型,不会出现u前缀;
  • 使用with open语句能自动管理文件的打开和关闭,比手动修改sys.stdout更安全、更符合Python的最佳实践。

验证解析

之后用你原来的解析代码就能正常读取了:

with open('output.json') as file:
    data = json.load(file)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:59:43