我有一个看起来像这样的JSON对象:
var obj = {
"selection":[
{
"author":"John Doe",
"articles":[
"Article One",
"Article Two"
]
}
]
}
我想将此对象传递给Django,以呈现在渲染时显示“Article One”和“Article Two”的视图。我首先序列化JSON对象,以便它可以附加到URL;我使用$.param(obj)
进行序列化。现在JSON对象看起来像这样:
"selection%5B0%5D%5Bauthor%5D=John+Doe&selection%5B0%5D%5Barticles%5D%5B%5D=Article+One&selection%5B0%5D%5Barticles%5D%5B%5D=Article+Two"
现在我可以将其附加到路径并使用window.open(url)
视图将处理其他所有内容。在Django端,我惊讶地发现JSON对象的结构已经改为:
"selection[0][author]=John+Doe&selection[0][articles][]=Article+One&selection[0][articles][]=Article+Two"
我希望能够将JSON对象用作dict,例如:
obj = request.GET.get('selection')
obj = json.loads(obj)
print(obj[0].author)
...
我应该如何在Django方面处理这个JSON结构?
答案 0 :(得分:0)
即使你这样说,你也没有正确地将对象序列化为JSON。正确的方法是使用JSON.stringify()
,如@dunder所述。
比将其解析回JSON.parse(strignifiedJson)
的对象。
var obj = {
"selection":[
{
"author":"John Doe",
"articles":[
"Article One",
"Article Two"
]
}
]
}
// Stringify and encode
var objAsParam = encodeURIComponent(JSON.stringify(obj));
// Send as a param, for example like http://example.com?obj=YourStringifiedObject...
// Parse it back:
var parsedObj = JSON.parse(decodeURIComponent(objAsParam));