使用python解析JSON时,'module'对象没有属性'loads'

AKI*_*WEB 24 python parsing json

我试图从Python解析JSON.我最近开始使用Python,所以我按照一些stackoverflow教程如何使用Python解析JSON,我想出了下面的代码 -

#!/usr/bin/python
import json

j = json.loads('{"script":"#!/bin/bash echo Hello World"}')
print j['script']
Run Code Online (Sandbox Code Playgroud)

但每当我运行上面的代码,我总是得到这个错误 -

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'
Run Code Online (Sandbox Code Playgroud)

有什么想法,我在这里做错了什么?我在windows中运行cygwin,只是在运行我的python程序.我使用的是Python 2.7.3

是否还有更好,更有效的解析JSON的方法?

更新: -

如果我删除单引号,下面的代码不起作用,因为我从其他方法获取JSON字符串 -

#!/usr/bin/python

import json

jsonStr = {"script":"#!/bin/bash echo Hello World"}

j = json.loads(jsonStr)
shell_script = j['script']
print shell_script
Run Code Online (Sandbox Code Playgroud)

所以在反序列化如何确定之前,它还有单引号?

这是我得到的错误 -

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
Run Code Online (Sandbox Code Playgroud)

Sin*_*ion 79

File "json.py", line 2, in <module>
  import json
Run Code Online (Sandbox Code Playgroud)

这行是赠品:你已经命名了你的脚本"json",但你正在尝试导入名为"json"的内置模块,因为你的脚本在当前目录中,它首先出现在sys.path中,所以这就是导入的模块.

您需要将脚本重命名为其他内容,而不是标准的python模块.

  • Haaaa 我做了完全相同的事情并最终到了这里。 (2认同)

Ale*_*off 6

看来您有一个json.py不属于标准库的模块。不确定ZookPython是什么。尝试重命名ZookPython目录(或仅重命名json.py)并重新运行。