将JSON字符串转换回数组

2024-04-19 02:22:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我将一个二维的浮点值数组传递给视图.py通过ajax。我的ajax调用如下所示:

$.ajax({
          method: "POST",
          url: "introURL",
          data: {
            csrfmiddlewaretoken: document.getElementsByName('csrfmiddlewaretoken')[0].value,
            dsg_mtx : JSON.stringify(dsg_mtx),

           },
          success: function(data) {

            document.getElementById("test").innerHTML = data;  // echo response
          },
          error: function() {
            alert ("Something went wrong");
          }

我通过这个调用将我的数据拉到视图中:

^{pr2}$

所以我的问题是如何将这个json stringify'd对象转换回二维数组来计算响应?如您所见,我尝试使用parse_float选项,但它仍然是str数据类型。在

传递的数组dsg_mtx是用一个Handson表创建的,如下所示:

-1  -1
-1  1
1   -1
1   1

谢谢你的指导。在


Tags: py视图urldataajaxfunction数组post
2条回答

尝试json.loads但在parse_float通过decimal.Decimal

designMtx = json.loads(request.POST['dsg_mtx'], parse_float=decimal.Decimal)

我的问题是掌上电脑的默认设置。当我向表提供浮点值时,默认情况下,表将它们转换为字符串。所以我发布了一个看起来像浮动的字符串矩阵。解决方法只是重新格式化放置数据的手持单元。在

var data = function () {
   return Handsontable.helper.createSpreadsheetData(mtxrows, mtxcols);
  };

  var hot = new Handsontable(container, {
    data: data,
    height: 480,
    colHeaders: true,
    rowHeaders: true,
    stretchH: 'none',
    columnSorting: true,
    contextMenu: true,
    className: "htCenter",
    cells: function (row, col, prop) {
        var cellProperties = {};
        if (row > 0) {
          cellProperties.type = 'numeric';
          cellProperties.format = '0[.]000';
         }                      
        return cellProperties;
        },

    afterChange: function () {
        var tmpData = JSON.parse(JSON.stringify(mtx_data));
    }
  });

所以基本上第一行之后的所有内容都设置为数值类型。在

所以现在在我的ajax调用中:

^{pr2}$

正确格式化并视图.py使用此调用正确加载:

designMtx = json.loads(request.POST['dsg_mtx'])

感谢Tomasz Jakub建议控制台.log()帮助我诊断了这个问题。在

谨致问候, 詹姆

相关问题 更多 >