繁体   English   中英

将JSON对象转换为JS数组

[英]Converting a JSON object into JS array

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

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

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

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

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

要么

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

要么

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

要么

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

我可以手动移除方括号并继续操作,也可以手动推动每个项目:

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

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

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

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

var parsed = [{ "id" : "33", "first_name" : "Oleg", "last_name" : "Smith" }];
var aaData = [];
for(key in parsed[0]) { aaData.push(parsed[0][key]); }

因此,现在aaData中有“ 33”,“ Oleg”,“ Smith”,您可以通过索引进行访问:

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

听起来您希望能够处理searchObj数组中有多个元素的情况。 在这种情况下,您可以遍历数组的所有元素并将其推入每个元素:

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

当只有一个元素时,将仅推入一个元素。

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

var parsedData = JSON.parse(responseData);

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

这个也可以在较旧的浏览器上运行:

var parsedData = $.parseJSON(responseData);

$.each(parsedData, function (index, item) {
    arrayCollection.push(item);
}

暂无
暂无

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

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