当前位置: 首页 > news >正文

【Python】已解决报错:AttributeError: module ‘json‘ has no attribute ‘loads‘解决办法

在这里插入图片描述

😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。
🤓 同时欢迎大家关注其他专栏,我将分享Web前后端开发、人工智能、机器学习、深度学习从0到1系列文章。

本文目录

  • 前言
  • 一、问题分析
  • 二、可能的错误原因
    • 错误的模块名称
    • 错误的导入方式
  • 三、 解决方案

前言

今天有读者跟我反馈一个问题:他在电脑d盘根目录创建了一个:json.py的python文件,打算练习一下json中的两个函数:loads()和dumps()。

但是运行了如下代码的时候,它竟然提示:AttributeError: module ‘json’ has no attribute ‘loads’,翻译成汉语的意思是:属性错误:json模块中没有loads属性(函数)。

import json
#json文本字符串
j ='''aa:''[{"password" : "123321","method" : "AES-256-CFB","protocol" : "auth_sha1_v4",
}]''
'''
js = json.loads(j)
print(js)
#json文本字符串
j ='''aa:''[{"password" : "123321","method" : "AES-256-CFB","protocol" : "auth_sha1_v4",
}]''
'''
js = json.loads(j)
print(js)

报错如下:

D:\>python json.py
Traceback (most recent call last):File "json.py", line 1, in <module>import jsonFile "D:\json.py", line 21, in <module>js = json.loads(j)
AttributeError: module 'json' has no attribute 'loads'

在这里插入图片描述

一、问题分析

在Python中,json模块是用于处理JSON数据的标准库之一。

它提供了将JSON编码为字符串(序列化)和将字符串解码为JSON(反序列化)的功能。然而,在使用json模块时,开发者可能会遇到AttributeError: module ‘json’ has no attribute 'loads’的错误。这意味着在尝试使用一个不存在的属性或方法。

二、可能的错误原因

错误的模块名称

可能是我们错误地引用了json模块。

错误示例:

import jsons  # 错误:使用了错误的模块名
data = '{"key": "value"}'
jsons.loads(data)  # 引发错误

错误的导入方式

在导入json模块时,使用了错误的导入方式。

错误示例:

from json import json  # 错误:json不是模块,而是模块的属性
data = '{"key": "value"}'
json.loads(data)  # 引发错误

三、 解决方案

如果都不是以上的错误点,那么大家可以试试下面的解决方案:

只要将我刚刚创建的json.py的文件改一下名字就可以了,比如说改成json1.py。只要别用json命名就可以了。

那为什么会出现这样的错误呢?

首先要了解python中import引入模块的原理机制。

当执行一行 from package import module as mymodule 命令时,Python解释器会查找package 这个包的module模块,并将该模块作为 mymodule 引入到当前的工作空间。

所以import语句主要是做了二件事:

  • 查找相应的module
  • 加载module到local namespace

在import的第一个阶段,主要是完成了查找要引入模块的功能。

查找时首先检查 sys.modules (保存了之前import的类库的缓存),如果module没有被找到,则按照下面的搜索路径查找模块:

  1. .py 所在文件的目录
  2. PYTHONPATH 中的目录
  3. python安装目录,UNIX下,默认路径一般为/usr/local/lib/python/
  4. 3.x 中.pth 文件内容

也就是说,当import json的时候,它会先搜索json.py所在目录有没有对应的模块,由于命名的json.py与json模块文件重名,所以会误以为自己创建的json.py即为json模块文件,所以会出现这样的错误。

所以以后需要注意以下几点:

  • 确保在导入模块时使用正确的模块名,避免使用错误的模块或拼写错误。
  • 在调用模块属性或方法时,使用正确的属性或方法名,避免拼写错误。
  • 如果不确定模块的使用方法,查阅官方文档或使用IDE的自动完成功能来帮助确认正确的方法名。
  • 在使用json模块进行序列化和反序列化时,确保传入的参数是字符串类型,因为json.loads和json.dumps都要求输入为字符串。
  • 考虑到代码的可读性和维护性,推荐使用完整的导入语句(如import json)而不是从模块中直接导入函数。
    在这里插入图片描述

相关文章:

  • mac免费的ntfs软件哪个好 MAC读取NTFS硬盘格式
  • 分数限制下,选好专业还是选好学校?
  • Databricks超10亿美元收购Tabular;Zilliz 推出 Milvus Lite ; 腾讯云支持Redis 7.0
  • 软考初级网络管理员__网络单选题
  • 黑龙江等保测评的流程和注意事项
  • 2023年全国大学生数学建模竞赛C题蔬菜类商品的自动定价与补货决策(含word论文和源代码资源)
  • 如何用多线程执行 unittest 测试用例实现方案
  • One能聊天接入百度千帆AppBuilder
  • 六西格玛助力便携式产品功耗大降:打造绿色节能新标杆!
  • Spring MVC详解(上)
  • 描述React中的key属性的作用,为什么它对于列表渲染很重要?
  • Spring事务管理与Spring AOP详解
  • 大学课设项目,Windows端基于UDP的网络聊天程序的服务端和客户端
  • 五大维度大比拼:ChatGPT比较文心一言,你的AI助手选择指南
  • [深度学习]基于C++和onnxruntime部署yolov10的onnx模型
  • 【个人向】《HTTP图解》阅后小结
  • Java Agent 学习笔记
  • JS实现简单的MVC模式开发小游戏
  • React Native移动开发实战-3-实现页面间的数据传递
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 动态魔术使用DBMS_SQL
  • 服务器从安装到部署全过程(二)
  • 前端路由实现-history
  • 写代码的正确姿势
  • ​520就是要宠粉,你的心头书我买单
  • #if #elif #endif
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (5)STL算法之复制
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (LeetCode) T14. Longest Common Prefix
  • (创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (生成器)yield与(迭代器)generator
  • (一)kafka实战——kafka源码编译启动
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • ***测试-HTTP方法
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .Net 知识杂记
  • .NET面试题(二)
  • .stream().map与.stream().flatMap的使用
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • [AIGC] 深入浅出 Python中的`enumerate`函数
  • [ai笔记4] 将AI工具场景化,应用于生活和工作
  • [Android学习笔记]ScrollView的使用
  • [BZOJ 2142]礼物(扩展Lucas定理)
  • [C++]类和对象(中)
  • [CDOJ 1343] 卿学姐失恋了
  • [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated c
  • [hdu2196]Computer树的直径
  • [html] 动态炫彩渐变背景
  • [HTML]Web前端开发技术28(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页
  • [JS入门到进阶] 哎,被vite小坑了一波,大家记得配置build.cssTarget为‘chrome61‘
  • [Linux]history 显示命令的运行时间