如何正确解析多维JSON数组

时间:2016-06-07 02:34:59

标签: javascript php jquery arrays json

JSFiddle提供错误的完全重复:JSFiddle

我正在尝试"步骤"通过多维数组。每次我尝试加载$ .parseJSON()时都会抛出错误。我已经花了几个小时与谷歌博士寻找答案或提示。所以,如果有人回答,请保持温和。

我试图通过的JSON数组是由AJAX函数发布的数据的json_encode()创建的。

{
    "propertyType": "{"
    propertyType1 ":"
    Apartment Style Flat ","
    propertyType2 ":"
    Loft Style "}",
    "houseAge": "",
    "living_area": ""
}

在发布之前发送给PHP的AJAX数据: console.log(vals.advanced)生成

Object {
    propertyType: "{"
    propertyType1 ":"
    Apartment Style Flat ","
    propertyType2 ":"
    Loft Style "}",
    houseAge: "",
    living_area: ""
}

修改 使用以下代码创建数据数组:

var checkboxes = [
    'propertyType'
];

// gather all checked check boxes and store in json array format for submission
$.each(
    checkboxes,
    function (i, e) {
        if(i==0) i=1; 
        var found = false;
        $("input[name=" + e + "]:checked").each(
            function () {
                id = this.name;
                arrCB[id + i++] = (this.value);
                found = true;
            }
        );
        if (found) {
            advanced[id] = JSON.stringify(arrCB);
            i = 1;
            arrCB = {}; // zero out holders
        }
    }
);

advanced['houseAge'] = $('#houseAge').val();
advanced['living_area'] = $('#living_area').val();
//advanced['lotsize'] = '';

// store data in array to post to server
vals = {
    advanced: advanced
};

$.post(
   "<?php echo $this->url->get('/ajax/session/update');?>",
   {values: vals}
);

会话文件数据由:

创建
$this->session->set('advancedSearchCriteria', json_encode($values['advanced']));

因此,虽然我从评论中理解了&#34;数组&#34;如上所示&#34; NOT JSON&#34;我只能问,&#34;那是怎么回事?&#34;上面的代码有什么问题?

感谢您的想法。

ANSWER 在下面的评论中,其他人表示这不是有效的JSON。如上面的示例所示,它是由jQuery创建的JSON,无论是否有效。

根据Barmar的评论,我发现上面使用的stringify命令不在适当的位置。更新后的代码如下并且有效。

if (found) {
   advanced[id] = arrCB; //JSON.stringify(arrCB);
   i = 1;
   arrCB = {}; // zero out holders
}

并在vals数组中:

vals = {
   advanced: JSON.stringify(advanced)
};

希望这会帮助别人。

0 个答案:

没有答案