Python json.dump结果为'str'没有属性'dump'

时间:2019-05-11 10:47:59

标签: python json

我正在尝试读取一个JSON文件,该文件仅包含一个具有一个属性(即索引)的对象。那是成功的,但是当我尝试重写为相同的JSON文件时,出现错误。 代码如下:

import sys
import json
import os
import os.path
import json
try:
    json_path = path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'indexes', 'table_index.json')
    with open(json_path) as json_file:  
        data = json.load(json_file)
    index1 = 4
    data["index"] = index1

    print(type(data)) #Prints 'dict'
    with open((json_path), 'wb') as f:  
        json.dump(data, f)
except Exception as e: 
     print(e)

我得到的错误是

'str' object has no attribute 'dump'

我基本上想要实现的是读取JSON,将index属性更改为不同的值,最后将其重写为相同的JSON文件。 写入前打印data [“ index”]的正确值为4。

1 个答案:

答案 0 :(得分:1)

如注释中所述,最可能的原因是您在代码中的某个位置定义了一个名为json的变量,该变量遮盖了模块名称。例如,

import json

json_string = '{"something": 4}'
print(json.dumps(json_string))  # prints "{\"something\": 4}"

但是,如果您要进行这样的分配:

json = '{"something_else": 4}'

然后调用与上面相同的命令

print(json.dumps(json_string))

它将提高

  

AttributeError:'str'对象没有属性'dumps'

因此,您要做的就是检查代码是否进行了这样的分配,进行更改并应该解决问题。