TypeError:解析JSON时字符串索引必须是整数

时间:2015-03-05 16:46:17

标签: python json

此代码在解析JSON时抛出TypeError: string indices must be integers。这是为什么?

ids=[]
for line in f:   
    k = json.loads(line)
    if "person" in k:
        for id in ids:
            if k["iden"] == id[0]: #Exception raised here
                #Do some processing
            else:
                ids += [(k["iden"], 1)]

2 个答案:

答案 0 :(得分:0)

json.loads(line)为您提供了一个字符串(在您的案例中),而不是字典。如果您有字典,可以使用dictionary['whatever'],但your_str['other_str']无法使用。检查您的json文件,它可能包含一些不需要的数据。

以下是json.loads(s)的文档:

  

将s(包含JSON文档的str或unicode实例)反序列化为Python对象。

在您的情况下, Python对象是字符串,而不是字典。

答案 1 :(得分:0)

我猜f是你的file.readlines(),你之前有类似的东西:

my_json_file = open('/path/to/file.json')
f = my_json_file.readlines()
my_json_file.close()

尝试而不是执行readlines(),将文件直接传递给json.load:

my_json_file = open('/path/to/file.json')
k = json.loads(my_json_file)
my_json_file.close()