我想利用一个功能,可以从数据库(sqlite3)获取数据并下载为.json文件。数据库中存在的数据是电子邮件,其中包含类似于,来自等的字段。我在提取时遇到问题,然后将其写入.json。我得到的数据是一个在写入.json "<UserData: UserData object> is not JSON serializable"
时给出错误的对象。下面我给出了一些代码片段,请帮忙..
如果可以采用这种格式获取数据,那么工作就完成!! :)但我不知道如何实现?:(
[{'body': {'markdown': u'http://127.0.0.1:8000/admin/gextracto/userdata/', 'html': u'http://127.0.0.1:8000/admin/gextracto/userdata/\r<br/>'}, u'To': u'infowikitech@gmail.com', u'From': u'Gextracto <infowikkitech@gmail.com>', 'id': u'151202ad347314bc', u'Subject': u'Your Download Ready!'}]
但它采用这种格式 -
[<UserData: UserData object>, <UserData: UserData object>, <UserData: UserData object>, <UserData: UserData object>, <UserData: UserData object>, <UserData: UserData object>, <UserData: UserData object>, <UserData: UserData object>, <UserData: UserData object>, <UserData: UserData object>, <UserData: UserData object>, <UserData: UserData object>, <UserData: UserData object>]
这是我检索数据的地方 -
def get(self,request, format=None):
label_id = request.GET['label']
all_mails=UserData.objects.filter(label=label_id)
return Response(all_mails)
这是我写的地方是.json -
function bulk_download_json(label_id){
$.ajax({
type:"GET",
url:"/initiate_download/?label="+label_id,
success:function(data){
bulk_mails=data;
bulk_download_filename = label_id.concat(".json");
var bulk_json_file = "text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(bulk_mails));
$('<a id="bulk_json_link" href="data:' + bulk_json_file + '" download="'+bulk_download_filename+'">download JSON</a>').appendTo('#bulk_json_content');
document.getElementById('bulk_json_link').click();
}
});
}
答案 0 :(得分:2)
您需要在此处将数据转换为json。
首先运行此查询,这将以已知格式显示数据。
data = your_db.objects.all().values()
完成此操作后,您可以使用,
import json
data_json = json.loads(dumps(data))
此链接也可以为您提供更多帮助。('django serialize queryset.values() into json')