';模块';对象没有属性';装载量';在使用python解析JSON时

';模块';对象没有属性';装载量';在使用python解析JSON时,python,json,parsing,Python,Json,Parsing,我正在尝试从Python解析JSON。我最近开始使用Python,所以我学习了一些stackoverflow教程,学习如何使用Python解析JSON,并编写了以下代码- #!/usr/bin/python import json j = json.loads('{"script":"#!/bin/bash echo Hello World"}') print j['script'] 但是每当我运行上面的代码时,我总是会得到这个错误- Traceback (most recent call

我正在尝试从Python解析JSON。我最近开始使用Python,所以我学习了一些stackoverflow教程,学习如何使用Python解析JSON,并编写了以下代码-

#!/usr/bin/python
import json

j = json.loads('{"script":"#!/bin/bash echo Hello World"}')
print j['script']
但是每当我运行上面的代码时,我总是会得到这个错误-

Traceback (most recent call last):
  File "json.py", line 2, in <module>
    import json
  File "/cygdrive/c/ZookPython/json.py", line 4, in <module>
    j = json.loads('{"script":"#!/bin/bash echo Hello World"}')
AttributeError: 'module' object has no attribute 'loads'
所以在反序列化之前,如何确保它也有一个引用

这就是我得到的错误-

Traceback (most recent call last):
  File "jsontest.py", line 7, in <module>
    j = json.loads(jsonStr)
  File "/usr/lib/python2.7/json/__init__.py", line 326, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
TypeError: expected string or buffer
回溯(最近一次呼叫最后一次):
文件“jsontest.py”,第7行,在
j=json.loads(jsonStr)
文件“/usr/lib/python2.7/json/_init__.py”,第326行,加载
返回\u默认\u解码器。解码
文件“/usr/lib/python2.7/json/decoder.py”,第366行,在decode中
obj,end=self.raw\u decode(s,idx=\u w(s,0.end())
TypeError:应为字符串或缓冲区
文件“json.py”,第2行,在
导入json
这一行是一个赠品:您将脚本命名为“json”,但您正在尝试导入名为“json”的内置模块,因为您的脚本位于当前目录中,它位于sys.path的第一位,因此这就是导入的模块


您需要将脚本重命名为其他名称,最好不是标准的python模块。

看起来您有一个
json.py
模块,它不是标准库的一部分。不知道ZookPython是什么。尝试重命名ZookPython目录(或者只是
json.py
)并重新运行。

有更好的方法吗?在python中,应该有一种明确的方法来做事情。。。还有,我有一个名为ZookPython的目录,其中有一个包含上述代码的json.py文件。你是说,我不能从任何目录运行我的python代码?你把python弄糊涂了。为了使用标准的
json.py
模块,您必须加载它。将文件重命名为其他名称,它应该可以工作。好的。。让我试试。。我将把脚本重命名为jsontest.py,并从ZookPython目录中删除旧的json.py。。同样,这是一个愚蠢的问题。实际上,我是从其他方法获取JSON文档的,所以我获取的实际JSON文档没有单引号,所以它将像这样
jsonStr={“script”:“#!/bin/bash echo Hello World”}
所以如果我使用上面的JSON字符串反序列化它并提取脚本部分,那么它就不起作用了。类似这样的东西-
j=json.load(jsonStr)print j['script']
会给我错误信息。那么现在我如何在从一个方法获得实际的json字符串后添加这个单引号,然后正确地反序列化它呢?如果你已经反序列化了json,那么它就不再是json了,它只是一个普通的ol'
dict
。我明白了,但我相信如果不添加任何单引号,它是不会反序列化的。。我用一个例子更新了我的问题。哈,我做了完全相同的事情,最后来到这里。
Traceback (most recent call last):
  File "jsontest.py", line 7, in <module>
    j = json.loads(jsonStr)
  File "/usr/lib/python2.7/json/__init__.py", line 326, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
TypeError: expected string or buffer
File "json.py", line 2, in <module>
  import json