我在python上做了一个赋值,我试图将包含另一个字典列表的字典转储到JSON中。但是,在运行数据时,它出错:
文件" D:\ Users \ XXXXX \ Anaconda2 \ lib \ json \ decoder.py",第367行,解码 提出ValueError(errmsg("额外数据",s,end,len(s))) ValueError:额外数据:第1行第76行 - 第1行第1434行(字符75 - 1433)
以下是JSON编写器上的代码片段:
This build is parameterized
由于字典"数据"输出的数据文件不是预期的。多次输出,而不是一次只输出一次。
def savelist(self):
data={}
f = open('partjson.txt','w')
for i in range(self.datacount):
data.setdefault("data",[]).append({'name':self.namelist[i], 'numid':str(self.numidlist[i]), 'height':str(self.heightlist[i]), 'length':str(self.lengthlist[i])})
json.dump(data,f)
f.close()
你能告诉我我的方法有什么问题吗?谢谢
答案 0 :(得分:1)
你错放了json.dump(data, f)
的缩进。每个循环都会调用data.setdefault
,从而创建所谓的"数据"字典条目。这会产生错误。代码应该是:
def savelist(self):
data={}
f = open('partjson.txt','w')
for i in range(self.datacount):
data.setdefault("data",[]).append({'name':self.namelist[i], 'numid':str(self.numidlist[i]), 'height':str(self.heightlist[i]), 'length':str(self.lengthlist[i])})
json.dump(data,f)
f.close()