我通过GET请求向Django服务器发送特定的JSON。 JSON如下。
data = {
test1: [1, 2, 3, 4],
test2: {
test21: ['a', 'b'],
test22: 'data22'
}
};
编辑2:发送数据的代码:
string = JSON.stringify(data)
url = 'http://127.0.0.1:8000/calc/?' + string
$http.get(url).success(function(response) {console.log(response)});
编辑结束2
在我stringify
之后发送它,我在请求数据上运行以下代码。
def calc (request):
data = request.GET
z = dict(data.iterlists())
res = json.dumps(z)
return HttpResponse(res)
http响应如下:
Object {{"test1":[1,2,3,4],"test2":{"test21":["a","b"],"test22":"data22"}}: Array[1]}
Array [1]元素基本上是一个空数组,所以没用。 当我将代码中的第三行更改为
时 z = dict(data.iteritems())
我得到以下回复
Object {{"test1":[1,2,3,4],"test2":{"test21":["a","b"],"test22":"data22"}}: ""}
基本上我需要的JSON是另一个JSON的关键。我知道我可以使用Object.keys()
方法提取所需的JSON,但我希望响应是正确的。
如何在python中修复此问题?
编辑1:我认为当我将数据转换为第3行的dict
项时出现错误。我认为这是因为z
上的操作,应该是dict
投掷错误。例如y = z['test1']
会抛出错误。
答案 0 :(得分:2)
查看this文章。
具体来说,
return HttpResponse(res, content_type = "application/json")
您错过了content_type
限定符。
此外,你真的应该使用serializers.serialize
之类的
def calc(request):
data = request.GET
return HttpResponse(serializers.serialize("json", data),
content_type = 'application/json')
答案 1 :(得分:2)
您发送数据的方式有点不对劲。
当您使用GET时,网址如下:
http://127.0.0.1:8000/?key1=value1&key2=value2
您上面所做的实际上使json字符串成为键而不是值。因此错误的请求格式。
我认为你需要做的是:
url = 'http://127.0.0.1:8000/calc/?payload=' + string
这将使payload
键和您的实际字符串成为值。并检索它:
data = request.GET
json_string = data['payload']
# load the string