【发布时间】:2011-03-29 10:18:51
【问题描述】:
我目前正在使用带有 Jquery Datatables 插件和 Django 的 javascript 和 python 开发一个项目。我的问题是我正在尝试在 Python 中创建一个字典,然后我希望执行 json.dumps(dictionary) 以便将其发送到 JQuery。
转换已执行,我可以使用调试器查看 JQuery/Javascript 代码中的数据,但它不会填充我的表,原因是 JSON 格式错误。我相信这是由于创建 python 代码中的字典的方式。我知道我在这一步做错了什么。我见过的所有示例都显示了我需要动态创建字典的硬编码字典。这是我在 python 中使用的代码。如果有人知道我做错了什么,请让我知道这让我发疯。这是字典代码的最新排列:-
dictionary = {}
array = []
status = 'OFF'
for item in self.scanResults:
if item[6]:
status = 'ON'
else:
status = 'OFF'
array.append( {'MAC_ADDRESS':item['mac_addr'],
'IP_ADDRESS':item['ip_addr'],
'NAME':item['name'],
'OS':item['os'],
'OS_VERSION':item['os_version'],
'WORKGROUP':'--',
'STATUS':status
})
dictionary = dict({'aaData': array})
JQuery端的JSON应该是这样的格式:-
{"aaData": [[..,..,..,..,],[..,..,..,..]]}
欢迎您提供任何帮助
克里斯
编辑:
附加信息。很抱歉之前没有包含它。 我按以下方式对其进行编码:-
返回 HttpResponse(simplejson.dumps(response_dict), mimetype='application/javascript')
结果的屏幕转储是:-
{“aaData”:[{“STATUS”:“ON”,“WORKGROUP”:“--”,“IP_ADDRESS”:“192.168.0.2”,“OS_VERSION”:“8.04”,“MAC_ADDRESS”:“ 00:10:e3:42:16:35”,“OS”:“Linux”,“NAME”:“Machine_One”},{“STATUS”:“ON”,“WORKGROUP”:“--”,“IP_ADDRESS “:“192.168.0.3”,“OS_VERSION”:“8.04”,“MAC_ADDRESS”:“00:19:a3:41:16:31”,“OS”:“Linux”,“NAME”:“Machine_Two”} ,{“状态”:“开”,“工作组”:“--”,“IP_ADDRESS”:“192.168.0.4”,“OS_VERSION”:“8.04”,“MAC_ADDRESS”:“00:19:b3:43: 16:32”,“OS”:“Linux”,“NAME”:“Machine_Three”},{“STATUS”:“ON”,“WORKGROUP”:“--”,“IP_ADDRESS”:“192.168.0.5”, “OS_VERSION”:“8.04”,“MAC_ADDRESS”:“00:19:c3:44:16:33”,“OS”:“Linux”,“NAME”:“Machine_Four”},{“STATUS”:“ON” ”、“WORKGROUP”:“--”、“IP_ADDRESS”:“192.168.0.6”、“OS_VERSION”:“8.04”、“MAC_ADDRESS”:“00:19:d3:45:16:34”、“OS” :“Linux”,“NAME”:“Machine_Five”},{“STATUS”:“ON”,“WORKGROUP”:“--”,“IP_ADDRESS”:“192.168.0.7”,“OS_VERSION”:“8.04”, “MAC_ADDRESS”:“00:19:e3:46:16:37”,“OS”:“Linux”,“NAME”:“Machine_Six”},{“状态” :“ON”,“WORKGROUP”:“--”,“IP_ADDRESS”:“192.168.0.8”,“OS_VERSION”:“8.04”,“MAC_ADDRESS”:“00:19:f3:47:16:38”, “OS”:“Linux”,“NAME”:“Machine_Seven”},{“STATUS”:“ON”,“WORKGROUP”:“--”,“IP_ADDRESS”:“192.168.0.9”,“OS_VERSION”:“ 8.04”、“MAC_ADDRESS”:“00:19:g3:48:16:38”、“OS”:“Linux”、“NAME”:“Machine_Eight”}、{“STATUS”:“ON”、“WORKGROUP” :“--”,“IP_ADDRESS”:“192.168.0.10”,“OS_VERSION”:“8.04”,“MAC_ADDRESS”:“00:19:h3:49:16:41”,“OS”:“Linux”, "NAME": "Machine_Nine"}]}
实际预期的结果是:-
{"aaData":[["ON","--","192.168.0.6", "8.04", "00:19:d3:45:16:34", "Linux", "Machine_Five" ], ["ON","--","192.168.0.6", "8.04", "00:19:d3:45:16:34", "Linux", "Machine_Five"]]} 只是给你一个想法。
我为此使用了 jQuery DataTables 插件。我相信问题是字典格式错误,即:我的错。我是 python 新手,尝试了许多字典排列,发现了 10 多种不这样做的方法,我只需要提示这种难以捉摸的正确方法。
再次欢呼
克里斯
已解决:
如果您愿意,我已经通过从服务器传回数组数组(列表列表)解决了这个问题,并在客户端解析它们,因为列表的大小是固定的,这不会导致性能问题。我将在以后更仔细地研究这个问题,并发布一个更好的修复或更优雅的解决方案。
【问题讨论】:
-
你在做
json.dumps(dictionary)吗?结果是什么?它与您的预期有何不同? (我根本不理解预期的输出——请给出一些实际的示例数据。) -
您的值需要用引号引起来
-
@meouw:它们会在序列化时出现。
-
您混合了下标类型:
item[6]和 item['mac_addr'] 等——这是故意的吗?对吗? -
是的 item[6] 是正确的,它只是一个令人讨厌的小参考,稍后将进行修改。不影响其他任何东西
标签: javascript jquery python django json