此代码在解析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)]
答案 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()