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

Python网络监测脚本调用json.loads()触发TypeError报错求助

错误原因

你混淆了json模块两个核心接口的用途:

  • json.loads() 用于将JSON格式的字符串/字节数据转换为Python字典、列表等原生对象,要求输入必须为字符串、字节或字节数组类型,你传入Python字典对象自然触发类型错误
  • json.dump() 本身就支持直接接收Python原生对象,自动转换为JSON格式写入文件,不需要提前做任何转换操作
修复方法

直接删除else分支里的obj = json.loads(data)这行冗余代码,将data变量直接传给json.dump()即可。

另外要注意:你当前使用追加模式(a)写入JSON文件,多次触发写操作后,文件内会存在多个独立的JSON对象,没有外层数组包裹,后续读取整个文件时会报格式错误。如果需要长期存储可正常解析的记录,推荐两种优化方案:

  • 方案1:使用JSON Lines格式存储,去掉indent格式化参数,每次写完追加一个换行符,后续读取时逐行解析即可
  • 方案2:每次写入前先读取现有文件内的JSON数组,将新记录追加到数组后再整体覆写回文件
修复后核心代码片段
else:
  print(web_ip_address, 'is unreachable!')
  with open('Downtime_Data.json', 'a', encoding='utf-8') as json_file:
    # 采用JSON Lines格式存储,后续可逐行解析不报错
    json.dump(data, json_file, sort_keys=True)
    json_file.write('\n')
    # 如果需要保留缩进格式化,建议改为数组存储方案避免整体格式错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 03:36:04