解析通过 ajax 返回的多个 json 列表
Parsing multiple json lists returned via ajax
我通过ajax返回了两个对象作为json。现在我无法访问这两个列表中的值。早些时候我有一个列表,我能够轻松解析它。
data=serialize("json", vm_obj)
data2=serialize("json", user_networks_list)
data_dict["vm"] = vm_obj
data_dict["nt"] = user_networks_list
json = simplejson.dumps({'vm': data, 'nt': data2})
return HttpResponse(json, mimetype='application/javascript')
所以,我必须列出名称nt和vm.我返回的json看起来像。
{"nt": "[{"pk": 1, "model": "network.defaultnetwork", "fields": {"endip": "100.16.10.255", "subnet": "100.16.10.0/24", "startip": "100.16.10.25", "port_group": "RoyalTech-803-pg", "is_default": 1, "eth_interface": "eth1", "dnsname": "royaltech.net", "user": 803, "dns": "172.16.10.1", "networkname": null, "gateway": "100.16.10.1"}}, {"pk": 241, "model": "network.defaultnetwork", "fields": {"endip": "100.168.5.254", "subnet": "100.168.5.0/24", "startip": "100.168.5.25", "port_group": "RoyalTech-803-pg1", "is_default": 0, "eth_interface": "eth2", "dnsname": "latest.local", "user": 803, "dns": "8.8.8.8", "networkname": "maxcheck", "gateway": "100.168.5.1"}}, {"pk": 2, "model": "network.defaultnetwork", "fields": {"endip": "10.250.0.254", "subnet": "10.250.0.0/24", "startip": "10.250.0.25", "port_group": null, "is_default": 0, "eth_interface": "eth3", "dnsname": "testing network", "user": 803, "dns": "100.0.0.0", "networkname": "Testing network", "gateway": "100.111.0.1"}}]", "vm": "[{"pk": 700, "model": "virtualmachine.virtualmachines", "fields": {"guest_full_name": "Windows_server_2008_R2_x86_64", "remoting": true, "vm_path_name": "/v/Roya-hd28_1.img", "user_type": null}}]"}
早些时候我有一个列表,我能够使用以下 javascript 在循环中访问数据。
for (var i = 0; i < data.length; i++)
{
visitors = data[i].pk;
object = data[i]['fields'].name;
}
知道javascript现在会是什么样子吗?
你在子字典中对 JSON 进行双重编码。你应该先序列化为 Python 字典,然后在最后将整个内容转储到 JSON:
data=serialize("python", vm_obj)
data2=serialize("python", user_networks_list)
data_dict["vm"] = vm_obj
data_dict["nt"] = user_networks_list
json = simplejson.dumps({'vm': data, 'nt': data2})
希望这有帮助
var vm = data.getAt('vm');
var nt = data.getAt('nt');
现在运行之前在 vm 和 nt 上使用的相同循环。
谢谢
现在,新数据对象中有两个列表,因此您将执行以下操作:
for (var i = 0; i < data.vm.length; i++) {
visitors = data.vm[i].pk;
object = data.vm[i]['fields'].name;
}
for (var j = 0; i < data.nt.length; j++) {
visitors = data.nt[j].pk;
object = data.nt[j]['fields'].name;
}
相关文章:
- 选择菜单,将json列表与单数值进行匹配
- 在javascript错误中将json列表传递给数组
- 如何循环浏览JSON列表
- 循环访问本地存储中的 json 列表
- JS+REST+NodeJS:如何从 JSON 对象解析 JSON 列表
- 在 ng-repeat 中添加和删除 JSON 列表
- 使用 Jquery 将 SelectListItems 的 JSON 列表映射到下拉列表 Select List 并指示
- 将对象追加到 JSON 列表
- 从控制器 MVC 返回的 JSON 列表中获取值
- 解析通过 ajax 返回的多个 json 列表
- 在JQuery / Javascript中加载从JSON列表返回的URL的最佳方法是什么
- AngularJS计算函数中的字符串,以调用json列表上的属性
- Json列表到javascript对象来构建一个表单
- 角度静态JSON列表不会呈现
- 按相反的顺序解析json列表
- 从自动填充的JSON列表中获取列表选项值,并传递给JS函数
- 如何在javascript文件中使用json列表文件绘制堆叠条形图
- 在JSON列表中拼接一个元素
- 从http://www.autorenlexikon.lu接收JSON列表
- 创建带有字符串和bool值对象的Json列表