Python json.dumps()无法转换值为list的dict
当我通过scrapy学习网络爬虫时,将数据保存到json。我发现json.dumps()无法处理列表的值列表,如下所示:Python json.dumps()无法转换值为list的dict,python,json,scrapy,Python,Json,Scrapy,当我通过scrapy学习网络爬虫时,将数据保存到json。我发现json.dumps()无法处理列表的值列表,如下所示: def __init__(self): self.file = codecs.open("mydata2.json","wb",encoding="utf-8") def process_item(self, item, spider): line = json.dumps(i,ensure_ascii=False) + '\n' print(li
def __init__(self):
self.file = codecs.open("mydata2.json","wb",encoding="utf-8")
def process_item(self, item, spider):
line = json.dumps(i,ensure_ascii=False) + '\n'
print(line)
self.file.write(line)
return item
def close_spider(self,spider):
self.file.close()
它不工作。然后我修改代码
def __init__(self):
self.file = codecs.open("mydata2.json","wb",encoding="utf-8")
def process_item(self, item, spider):
i = dict(item)
for key in i.keys():
i[key] = str(i[key])
print(i)
line = json.dumps(i,ensure_ascii=False) + '\n'
print(line)
self.file.write(line)
return item
def close_spider(self,spider):
self.file.close()
一切都很好,进展如何 可能原始类型中有一些数据无法序列化。但如果您将all转换为string,则可以序列化它 您可以定义自定义JsonEncoder来解决此问题 要使用自定义JSONECODER子类(例如,重写default()方法以序列化其他类型的子类),请使用cls kwarg指定它;否则使用JSONECODER
它以什么方式不起作用?你有错误吗?意外输出?另外,在第一个示例中,您似乎引用了一个名为
i
的变量,该变量不存在。