Django错误 - 初始JSON数据

时间:2015-09-14 22:43:15

标签: python json django csv django-models

我有一个带有我的数据的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')

如果有人知道为什么会这样,或者我怎么解决它,我很想知道。如果您有任何问题,我也很乐意回答!

1 个答案:

答案 0 :(得分:0)

您无法通过按顺序转储JSON dicts来创建JSON文件。你需要有一个周围的容器 - 即[] - 和用逗号分隔行。

更简单的方法是一次性转储整个数据,而不是逐行转储:json库将处理其余的数据。

reader = csv.DictReader( csvfile, fieldnames)
json.dump(list(reader), jsonfile)

这将解决您的实际错误,但正如Alasdair指出的那样,这仍然无效,因为initial_data预计会采用某种格式。