如何将json数组解析为数组而不是对象

时间:2016-11-16 23:20:54

标签: javascript arrays json object

我有跟随foobar变量的字符串(我通过查询带有$ http.post的网络服务器来得到它):

var foobar = "[{param1: 'value1'}, {param2: 'value2'}]";

如何制作阵列呢?如果我使用JSON.parse,它将为我提供一个对象(尝试typeof foobar)。但是,如果我然后使用delete param1,它将使它成为[null,{param2:'value2'}]。我想要做的,主要是删除第一个或第二个项目。此外,值可能不同,但键将始终保持不变,即。他们将成为数字。

5 个答案:

答案 0 :(得分:2)

似乎您想要从删除语句中将数组解析为单个对象。如果是的话......



var foobar = '[{"param1":"value1"},{"param2":"value2"}]';
var json = JSON.parse(foobar);

json = json.reduce(function(previousValue, currentValue){
  Object.keys(currentValue).forEach(function(key){
    previousValue[key] = currentValue[key];
  });
  return previousValue;
}, {});

console.log(json);




我可能错了。

答案 1 :(得分:0)

描述

这已经是一个数组var foobar = [{param1: 'value1'}, {param2: 'value2'}];

实施例

var foobar = [{param1: 'value1'}, {param2: 'value2'}];
// this is an array
console.log(foobar);
// this is an object in an array
console.log(foobar[0]);

答案 2 :(得分:0)

这个

LoginRestApi.java[postLogin]:111) - {"status":"OK","message":"","body":{"principal":"fooinc\\user","ticket":"24e28a47-d852-460e-9690-6196e094469f","roles":"[]"}}

是一个数组。



var foobar = [{param1: 'value1'}, {param2: 'value2'}];




如果要删除第一项,只需使用var foobar = [{param1: 'value1'}, {param2: 'value2'}]; console.log(foobar instanceof Array)方法:



shift




如果您要删除第二项,可以使用var foobar = [{param1: 'value1'}, {param2: 'value2'}]; foobar.shift(); console.log(foobar)方法:



pop




答案 3 :(得分:0)

正如其他人所说,你所提供的已经是一个数组。

var foobar = [{param1: 'value1'}, {param2: 'value2'}];
//You can see this because of the []
//You can delete the index of an array by using the splice method
foobar.splice(1,1);
//First param is the index, the second is the number of items to erase

答案 4 :(得分:0)

最让您感到困惑的是typeof

对于数组,typeof会说它是一个对象(as you can read from MDN here)。如果要测试变量是否为数组,可以使用:foobar.isArray()