在 python/Django 中多次迭代 json 对象
Posted
技术标签:
【中文标题】在 python/Django 中多次迭代 json 对象【英文标题】:iterate json object multiple times in python/Django 【发布时间】:2013-02-26 01:34:57 【问题描述】:我正在使用 jquery 循环遍历 json 对象...但是有些似乎不起作用...
这是我的代码,
$.ajax(
type: "GET",
url: "/users/",
// data: "page="+pageNum,
async: false,
dataType: 'json',
success: function(data)
//alert("OK AJAX");
$("#search_btn").remove();
$('#btnadduser').css('visibility','visible');
$.each(data, function()
$.each(this, function(k, v)
/// iterate through the objects
$("#nbody").html("<tr style='background-color:#FFFFFF; font-size:14px;'> <td>"+data.f.user4.first_name+"</td> <td>"+data.f.user4.last_name+"</td><td>"+data.f.user4.username+"</td> <td>"+data.f.user4.email+"</td> <td>"+data.f.user4.username+"</td> <td>");
);
);
);
当我在终端打印 json 对象时,这是我得到的。
"f":
"user4": "username": "user4", "first_name": "Alex", "last_name": "kasina", "is_active": true, "email": "alexkasina@gmail.com",
"user5": "username": "user5", "first_name": "", "last_name": "", "is_active": false, "email": "", , "user2": "username": "user2", "first_name": "", "last_name": "", "is_active": true, "email": "",
"user3": "username": "user3", "first_name": "", "last_name": "", "is_active": true, "email": "",
"user1": "username": "user1", "first_name": "", "last_name": "", "is_active": true, "email": "",
"lexx": "username": "lexx", "first_name": "", "last_name": "", "is_active": true, "email": "tas.ss@df.dc"
我想遍历每个用户设置他们的名字,姓氏,用户名,... 请帮忙?
观点
@login_required
def users(request):
from django.core.serializers.json import DjangoJSONEncoder
from django.forms.models import model_to_dict
html = User.objects.all()
f = # initialise the output
username = 'username' # one of the fields from myModel
[f.update(x[username]: x) for x in [model_to_dict(y) for y in html]]
result = simplejson.dumps("f" : f, cls=DjangoJSONEncoder)
print result#To see the json object
return HttpResponse(result)
【问题讨论】:
我们需要查看生成 JSON 对象的视图。 【参考方案1】:views.py
@login_required
def users(request):
from django.core.serializers.json import DjangoJSONEncoder
from django.forms.models import model_to_dict
html = User.objects.all()
f = [model_to_dict(x) for x in html]
return HttpResponse(simplejson.dumps(f), cls=DjangoJSONEncoder)
var user_list = JSON.parse(data);
for(var i=0; i<user_list.length; i++)
var user_name = user_list[i]['username'];
var first_name = user_list[i]['first_name'];
var last_name = user_list[i]['last_name'];
// ...
// do something with user_name, first_name and last_name...
【讨论】:
SyntaxError: JSON.parse: 意外字符 [Break On This Error] var user_list = JSON.parse(data)['f'];我知道数据已经被解析了。还有其他创建列表的方法吗? 我不确定,但我认为您不需要 views.py 中的 DjangoJSONEncoder。只要 result = simplejson.dumps("f" : f) 就可以了。 当我删除 DjangoJSONEncoder 时,这是错误,datetime.datetime(2013, 3, 4, 0, 30, 3, tzinfo=成功了!
$.each(data, function(index0, l)
$.each(l, function(index1, n)
/// iterate through the objects
var first_name = n.first_name;
var last_name = n.last_name;
var surname = n.username;
// do something with user_name, first_name and last_name...
$("#nbody").append("<tr> <td>"+ first_name +"</td> <td>"+ last_name +"</td><td>"+ username +"</td> </tr>");
);
);
【讨论】:
以上是关于在 python/Django 中多次迭代 json 对象的主要内容,如果未能解决你的问题,请参考以下文章
在具有多次迭代的 CodedUI 测试中,仅为最后一次迭代生成 UITestActionLog.html 文件