将JSON对象转换为JS数组

时间:2015-08-08 20:38:08

标签: javascript jquery arrays json

这是我在json_encode之后从Wordpress数据库获得的jQuery响应:

[{ "id" : "33", "first_name" : "Oleg", "last_name" : "Smith" }]

因为它本质上是多维的,但只有一行,所以你的两端都有方括号。

因此,在尝试解析然后转换为JS数组时,我在SO上找到的所有方法都失败了,例如。

for(var x in parsed){
    arr.push(parsed[x]);
}

OR

var arr = $.map(obj, function(el) { return el; });

OR

var arr = Object.keys(obj).map(function(k) { return obj[k] });

OR

for(var i in JsonObj) {
    if(JsonObj.hasOwnProperty(i) && !isNaN(+i)) {
        array[+i] = JsonObj[i];
    }
}

我可以手动删除方括号并继续或我可以手动推送每个项目:

aaData.push(searchObj[0].first_name);

但我不喜欢我的任何解决方案。我还有其他选择吗?

PS。我需要一个JS数组,以便我可以使用[i]循环。

3 个答案:

答案 0 :(得分:2)

您可以执行以下操作将所有值推送到aaData数组:

aaData[0] will give you 33
aaData[1] will give you Oleg, etc

所以,现在你在aaData中有“33”,“Oleg”,“Smith”,你可以通过索引访问:

{{1}}

答案 1 :(得分:1)

听起来你希望能够处理searchObj数组中有多个元素的情况。在这种情况下,您可以循环遍历数组的所有元素并推送它们中的每一个:

for (var i = 0; i < searchObj.length; i++) {
    aaData.push(searchObj[i].first_name);
}

当只有一个元素时,只会推送一个元素。

答案 2 :(得分:1)

您可以解析JSON,然后遍历数据,将每个项目插入到集合数组中,如下所示:

public function setPublishedAtAttribute($date){
    $this->atributes['published_at'] = Carbon::createFromFormat('Y-m-d', $date);
}  

这个也适用于旧浏览器:

var parsedData = JSON.parse(responseData);

parsedData.forEach(function (item) {
    arrayCollection.push(item);
}