jquery:json的帖子实际上会发布数组

时间:2010-11-12 07:04:35

标签: python json

我有一个python作为CGI,来自jquery的POST会将json对象转换为数组,所以当我从jquery看到POST时,我实际上看到了:

login_user[username]=dfdsfdsf&login_user[password]=dsfsdf

([和]已经逃脱)

我的问题是如何在python中将此字符串转换回JSON?或者,我如何将此字符串转换为python数组/ dict结构,以便我可以更轻松地处理它?<​​/ p>

[编辑] 我的jquery发布了:

{'login_user': {'username':username, 'password':password}}

3 个答案:

答案 0 :(得分:5)

如果你想要完成的是从浏览器发送结构化数据,然后在Python后端解压缩并保持相同的结构,我建议如下:

  1. 在浏览器中创建JavaScript对象以保存您的数据:

    var d = {} 
    d['login_user'] = { 'username': 'foo', 'password': 'bar' }
    
  2. 使用https://github.com/douglascrockford/JSON-js
  3. 序列化为JSON
  4. POST到你的后端做这样的事情:

    $ .post(url,{'data':encoded_json_data},...)

  5. 在你的Python代码中,解析JSON,我的示例中的POST是你在CGI脚本中获取POST数据的地方:

    data = json.loads(POST['data'])
    data['login_user']
    

答案 1 :(得分:1)

import re

thestring = "login_user[username]=dfdsfdsf&login_user[password]=dafef"

pattern = re.compile(r'^login_user\[username\]=(.*)&login_user\[password\]=(.*)')
match = pattern.search(thestring)
print match.groups()

输出: >>> ('dfdsfdsf', 'dafef')

因此,

lp = match.groups()
print "{'login_user': {'username':"+lp[0]+", 'password':"+lp[1]+"}}"

应承担:>>> {'login_user': {'username':dfdsfdsf, 'password':dafef}}

答案 2 :(得分:1)

>>> import json
>>> data = {'login_user':{'username':'dfdsfdsf', 'password':'dsfsdf'}}
>>> json.dumps(data)
'{"login_user": {"username": "dfdsfdsf", "password": "dsfsdf"}}'

我怀疑data已经包含在GET var中,如果它来自网址...