我正在开发 Django 应用程序。我需要从服务器传回一些参数,我使用以下代码执行此操作:
num_periods = 25
num_traces = 2
opacities = [0.5, .99]
ys = [[1,2,3,4,5],[7,6,5,4,3]]
response = {'text' : request.POST['value'],
'num_periods' : num_periods,
'num_traces' : num_traces,
'opacity': opacities,
'ys': ys
}
return JsonResponse(response)
在客户端,在 Ajax 回调中,我的代码如下所示:
success : function(data) {
console.log('num traces = ' + data.num_traces);
console.log('opacitiees = ' + data.opacity);
console.log('data = ' + data.ys);
但是,console.log(ys)
给出 data = 1,2,3,4,5,7,6,5,4,3
,看起来压扁。
但是,如果我执行 console.log(ys[1])
,它“看起来像”一个数组:7,6,5,4,3
,虽然没有括号。所以,JS 知道嵌套列表结构。
但是任何将其放入数字列表的尝试都会失败。例如这段代码:
z=[]
z.push(ys[0])
z.push(ys[1])
当我执行 console.log("z = "+ z 时,返回
z = 1,2,3,4,5,7,6,5,4,3
)
这里发生了一些令人非常困惑的事情。我也尝试了 Object.values(ys[0])
,但这仍然没有给出列表。我见过的其他想法是巧妙地使用切片,如下所示:
var ys=[];
while(list.length) ys.push(list.splice(0,5));
console.log("ys[0]="+ys[0]);
这给出了 ys[0]=1,2,3,4,5,7,6,5,4,3
如何获取从 Python 接收的 JSON 并使其看起来像我明确需要的基本列表列表?在分配之前将“[”和“]”填充在事物周围没有什么好处......
看起来非常令人困惑的是,如果我通过执行类似
的操作在 Javascript 中进行“环回”var foo = JSON.parse(JSON.stringify( { 'ys' : [[1,2,3],[4,5,6]]))
然后事情看起来好多了:foo.ys 的类型现在是 Array[ Array[5], Array[5] ]
。但我通过实际的 Python-JS 传输得到的类型只是数字列表,类型为“Object”。
最佳答案
(1) 使用浏览器的开发工具查看服务器和浏览器之间来回发送的内容(在所有浏览器上按 F12)。
(2) 您可以在 console.log('ys=', ys);
如果它实际上不是与您发送的值相同的列表列表,我会感到非常惊讶。
关于javascript - 让 Javascript 通过 JSON 查看来自 Python 的列表的过程很困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46124579/