我有一个带有我的数据的csv,我将其转换为JSON,然后将其作为我的Django模型的初始数据提供。
每当我跑
python manage.py migrate
我得到了
引发ValueError(errmsg(“Extra data”,s,end,len(s))) django.core.serializers.base.DeserializationError:安装夹具'PATH TO FOLDER / initial_data.json'时出现问题:额外数据:第2行第1行 - 第666行第643列(字符729 - 498863)
第666行第643列是我的JSON中的最后一个字符。即使将JSON切成两半,它仍会说错误在最后一个字符上。
将CSV转换为JSON的代码是:
import csv
import json
csvfile = open('organizationTest1.csv', 'rU')
jsonfile = open('initial_data.json', 'w')
fieldnames = ("role","name")
reader = csv.DictReader( csvfile, fieldnames)
a = 0
for row in reader:
a += 1
json.dump(row, jsonfile)
jsonfile.write('\n')
如果有人知道为什么会这样,或者我怎么解决它,我很想知道。如果您有任何问题,我也很乐意回答!
答案 0 :(得分:0)
您无法通过按顺序转储JSON dicts来创建JSON文件。你需要有一个周围的容器 - 即[]
- 和用逗号分隔行。
更简单的方法是一次性转储整个数据,而不是逐行转储:json
库将处理其余的数据。
reader = csv.DictReader( csvfile, fieldnames)
json.dump(list(reader), jsonfile)
这将解决您的实际错误,但正如Alasdair指出的那样,这仍然无效,因为initial_data预计会采用某种格式。