前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Python】已解决报错:AttributeError: module ‘json‘ has no attribute ‘loads‘解决办法

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

作者头像
程序员洲洲
发布2024-06-15 12:42:28
850
发布2024-06-15 12:42:28
举报
文章被收录于专栏:项目文章项目文章

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

前言

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

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

代码语言:javascript
复制
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)

报错如下:

代码语言:javascript
复制
D:\>python json.py
Traceback (most recent call last):
  File "json.py", line 1, in <module>
    import json
  File "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模块。

错误示例:

代码语言:javascript
复制
import jsons  # 错误:使用了错误的模块名
data = '{"key": "value"}'
jsons.loads(data)  # 引发错误

错误的导入方式

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

错误示例:

代码语言:javascript
复制
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)而不是从模块中直接导入函数。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、问题分析
  • 二、可能的错误原因
    • 错误的模块名称
      • 错误的导入方式
      • 三、 解决方案
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档