将PHP JSON数据转换为JavaScript数组

时间:2015-10-16 18:22:20

标签: javascript php arrays json

我有一个生成的JSON PHP数据,我通过AJAX请求在JavaScript中作为Object接收并尝试转换为数组。

例如,我可能有这个(不是真实的数据):

Array[1]
    0:Object
        items: Object
            0: "First data item"
            1: "Second data item"
            __proto__: Object
                Some unimportant getter functions
        __proto__: Object
            Some unimportant getter functions
        length: 1
        __proto__: Object
            Some functions

我能够将外部部分转换为数组,但是如何将内部部分(尤其是items:Object处的字典)转换为数组呢?

更新

我的结构发生了变化

Array[1]
    title:#data

1 个答案:

答案 0 :(得分:0)

如果您能够修改输出JSON的服务器脚本,最好将数据格式化为您想要使用的实际格式。

但是如果要将对象属性值转换为数组,可以通过在对象上设置length属性,然后在.call方法上使用Array.slice来实现。为了做到这一点,对象属性名称必须是数字(即0,1,2,3等),任何不会自动添加到数组中。

var data = [
  { 
    items:{
      0: "Item 1",
      1: "Item 2",
      2: "Item 3",
      3: "Item 4",
    }
  },
  { 
    items:{
      0: "Item 5",
      1: "Item 6",
    }
  }  
];

for(var i=0; i<data.length; i++){
  var items = data[i].items;
  items.length = Object.keys(items).length;
  data[i].items = [].slice.call(items,0);
}
console.log(data);
document.body.innerHTML=JSON.stringify (data);

如果您的对象属性名称不是数字,则必须进行循环并手动将每个值添加到数组

for(var i=0; i<data.length; i++){
  var items = data[i].items;
  var itemArray = [];
  Object.keys(items).forEach(function(key){
     itemArray.push( items[key] );
  });
  data[i].items = itemArray;
}