繁体   English   中英

JSON.Stringify 在对对象数组进行字符串化时返回空数组

[英]JSON.Stringify returns empty array when Stringifying array of objects

我有一个初始化的数组

var detail = [];
// Have also tried var detail = new Array;

在我的其余代码中,我通过以下方式循环创建对象的数据集

while(true) {

   var tempObj = {
      qty : "",
      size : "",
      adr : "",
      dir : ""
   }

   // Some Logic

   tempObj.qty = val;
   tempObj.size = val;
   tempObj.adr = val;
   tempObj.dir = val;

   detail.push(tempObj);
}

然后,当我尝试 JSON.Stringify 我的详细信息数组以通过 AJAX 请求发送时,它返回一个空白数组 []。 这也可以在控制台的以下屏幕截图中看到。

注意:底部的缩进将原型称为对象是因为屏幕截图来自我试图发送到我的服务器的对象。 该对象中还有其他非基于数组的数据。 我想对数组进行字符串化,以便将其正确发送到服务器。

在此处输入图片说明

是什么导致了这种行为,我该如何纠正它?

编辑 1: JSON.stringify(detail) 的执行

var requestObj = {
     field1: “a”,
     field2: “b”,
     field3: “c”,
     data: JSON.stringify(detail)
}

编辑 2:添加完整的代码块

$("#submit-button").click(function() {
        var reqDate = $("#reqDate").val();
        var wonum = $("#wonum").val();
        var svc = $("#svc").val();
        var complaint = $("#complaint").val();
        var comments = $("#comm").val();
        var detail = new Array;
        var topValid = false;

        $(".tb-rw").each(function() {

            var qty = $(this).find(".quantity");
            var size = $(this).find(".size");
            var adr = $(this).find(".address");
            var dir = $(this).find(".direction");
            var mgk = $(this).find(".mgKey");

            var tempObj = {};

            if(fail == true || topValid == true) {
                alert("Please Make Sure all Inputs are Filled Out");
                return;
            } else {
                //tempArr.push(qty.val(), size.val(), dir.val());
                tempObj.qty = qty.val();
                tempObj.size = size.val();
                tempObj.dir = dir.val();
            }

            findSimilarJobs(adr.val(), mgk.val(), function(data) {
                if(data != "clear") {
                    console.log("FAILED VALIDATION");
                    console.log(data);
                    adr.css('border-color', 'red');
                    alert("Please Make Sure all Addresses are Valid");
                    return;
                } else {
                    //tempArr.push(adr.val());
                    tempObj.adr = adr.val();
                }

                detail.push(tempObj);
            });
        });

        console.log("Preparing to send!");

        var requestData = {
            "requestedDate": reqDate,
            "svc": svc,
            "wonum": wonum,
            "complaint": complaint,
            "comment": comments,
            "data": JSON.stringify(detail)
        };

        console.log(requestData);
        console.log(JSON.stringify(detail));
    });

Stringify 应该像这个stringify一样全部小写,否则将不起作用。 所以,这个JSON.Stringify(detail)应该是这个JSON.stringify(detail)

您的 tempObj 是 JSON 对象,它应该具有如下所示的key:value

while(true) {

   var tempObj = {
      qty : "",
      size : "",
      adr : "",
      dir : ""
   }

   // or you can create empty object 
   //   var tempObj = {};

   tempObj.qty = val;
   tempObj.size = val;
   tempObj.adr = val;
   tempObj.dir = val;

   detail.push(tempObj);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM