首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用javascript将JSON对象转换为数组

使用javascript将JSON对象转换为数组
EN

Stack Overflow用户
提问于 2017-11-27 10:09:35
回答 5查看 17.5K关注 0票数 1

我有一个jQuery ajax请求,它以json格式返回数据,我们如何将它转换成数组。蒂娅。

代码语言:javascript
复制
[{"Day":"Nov 03","Saavor Kitchen":null,"Home Kitchen":2,"Restaurant":null},
{"Day":"Nov 06","Saavor Kitchen":null,"Home Kitchen":1,"Restaurant":1},
{"Day":"Nov 07","Saavor Kitchen":null,"Home Kitchen":null,"Restaurant":1},
{"Day":"Nov 08","Saavor Kitchen":null,"Home Kitchen":2,"Restaurant":null},
{"Day":"Nov 09","Saavor Kitchen":null,"Home Kitchen":4,"Restaurant":null},
{"Day":"Nov 10","Saavor Kitchen":null,"Home Kitchen":3,"Restaurant":null},
{"Day":"Nov 11","Saavor Kitchen":null,"Home Kitchen":4,"Restaurant":null},
{"Day":"Nov 13","Saavor Kitchen":null,"Home Kitchen":4,"Restaurant":1},
{"Day":"Nov 14","Saavor Kitchen":null,"Home Kitchen":2,"Restaurant":1},
{"Day":"Nov 15","Saavor Kitchen":null,"Home Kitchen":5,"Restaurant":null},
{"Day":"Nov 16","Saavor Kitchen":null,"Home Kitchen":5,"Restaurant":null},
{"Day":"Oct 30","Saavor Kitchen":null,"Home Kitchen":null,"Restaurant":2},
{"Day":"Oct 31","Saavor Kitchen":null,"Home Kitchen":2,"Restaurant":3}]

预期产出:-

代码语言:javascript
复制
    [
      ['Day', 'Saavor Kitchen', 'Home Kitchen', 'Restaurant '],
      ['Nov 03',  1000,      400, 50],
      ['Nov 04',  1170,      460, 90],
      ['Nov 05',  660,       1120, 58],
      ['Nov 06',  1030,      540, 88]
    ]  
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-11-27 10:21:49

您可以这样做(使用.map.unshift):-

代码语言:javascript
复制
var json = '[{"Day":"Nov 03","Saavor Kitchen":null,"Home Kitchen":2,"Restaurant":null},{"Day":"Nov 06","Saavor Kitchen":null,"Home Kitchen":1,"Restaurant":1},{"Day":"Nov 07","Saavor Kitchen":null,"Home Kitchen":null,"Restaurant":1},{"Day":"Nov 08","Saavor Kitchen":null,"Home Kitchen":2,"Restaurant":null},{"Day":"Nov 09","Saavor Kitchen":null,"Home Kitchen":4,"Restaurant":null},{"Day":"Nov 10","Saavor Kitchen":null,"Home Kitchen":3,"Restaurant":null},{"Day":"Nov 11","Saavor Kitchen":null,"Home Kitchen":4,"Restaurant":null},{"Day":"Nov 13","Saavor Kitchen":null,"Home Kitchen":4,"Restaurant":1},{"Day":"Nov 14","Saavor Kitchen":null,"Home Kitchen":2,"Restaurant":1},{"Day":"Nov 15","Saavor Kitchen":null,"Home Kitchen":5,"Restaurant":null},{"Day":"Nov 16","Saavor Kitchen":null,"Home Kitchen":5,"Restaurant":null},{"Day":"Oct 30","Saavor Kitchen":null,"Home Kitchen":null,"Restaurant":2},{"Day":"Oct 31","Saavor Kitchen":null,"Home Kitchen":2,"Restaurant":3}]';

var columns = ['Day', 'Saavor Kitchen', 'Home Kitchen', 'Restaurant'];

var result = JSON.parse(json).map(function(obj) {
  return columns.map(function(key) {
    return obj[key];
  });
});
result.unshift(columns);
console.log(result);
console.log(Object.keys($.parseJSON(json)[0]));
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

动态获取密钥的:-

代码语言:javascript
复制
console.log(Object.keys($.parseJSON(json)[0]));

由于您已经在ajax代码中使用了dataType:'json',所以您可以这样做:-

代码语言:javascript
复制
console.log(Object.keys(json[0]));
票数 6
EN

Stack Overflow用户

发布于 2017-11-27 10:19:58

简单地将Object.values()Array.map()组合在一起就可以做到这一点:

代码语言:javascript
复制
var res = arr.map(function(item) {
  return Object.values(item);
});

演示:

代码语言:javascript
复制
var arr = [{
    "Day": "Nov 03",
    "Saavor Kitchen": null,
    "Home Kitchen": 2,
    "Restaurant": null
  },
  {
    "Day": "Nov 06",
    "Saavor Kitchen": null,
    "Home Kitchen": 1,
    "Restaurant": 1
  },
  {
    "Day": "Nov 07",
    "Saavor Kitchen": null,
    "Home Kitchen": null,
    "Restaurant": 1
  },
  {
    "Day": "Nov 08",
    "Saavor Kitchen": null,
    "Home Kitchen": 2,
    "Restaurant": null
  },
  {
    "Day": "Nov 09",
    "Saavor Kitchen": null,
    "Home Kitchen": 4,
    "Restaurant": null
  },
  {
    "Day": "Nov 10",
    "Saavor Kitchen": null,
    "Home Kitchen": 3,
    "Restaurant": null
  },
  {
    "Day": "Nov 11",
    "Saavor Kitchen": null,
    "Home Kitchen": 4,
    "Restaurant": null
  },
  {
    "Day": "Nov 13",
    "Saavor Kitchen": null,
    "Home Kitchen": 4,
    "Restaurant": 1
  },
  {
    "Day": "Nov 14",
    "Saavor Kitchen": null,
    "Home Kitchen": 2,
    "Restaurant": 1
  },
  {
    "Day": "Nov 15",
    "Saavor Kitchen": null,
    "Home Kitchen": 5,
    "Restaurant": null
  },
  {
    "Day": "Nov 16",
    "Saavor Kitchen": null,
    "Home Kitchen": 5,
    "Restaurant": null
  },
  {
    "Day": "Oct 30",
    "Saavor Kitchen": null,
    "Home Kitchen": null,
    "Restaurant": 2
  },
  {
    "Day": "Oct 31",
    "Saavor Kitchen": null,
    "Home Kitchen": 2,
    "Restaurant": 3
  }
];

var res = arr.map(function(item) {
  return Object.values(item);
});

console.log(res);

票数 5
EN

Stack Overflow用户

发布于 2017-11-27 10:18:57

创建一个键数组(标题)作为第一行使用,并从对象中获取值。

解析 json,并使用Array#map迭代它。在每次迭代中,映射键数组,并从对象中提取值。

塞纳特键数组作为第一个数组。

代码语言:javascript
复制
var json = '[{"Day":"Nov 03","Saavor Kitchen":null,"Home Kitchen":2,"Restaurant":null},{"Day":"Nov 06","Saavor Kitchen":null,"Home Kitchen":1,"Restaurant":1},{"Day":"Nov 07","Saavor Kitchen":null,"Home Kitchen":null,"Restaurant":1},{"Day":"Nov 08","Saavor Kitchen":null,"Home Kitchen":2,"Restaurant":null},{"Day":"Nov 09","Saavor Kitchen":null,"Home Kitchen":4,"Restaurant":null},{"Day":"Nov 10","Saavor Kitchen":null,"Home Kitchen":3,"Restaurant":null},{"Day":"Nov 11","Saavor Kitchen":null,"Home Kitchen":4,"Restaurant":null},{"Day":"Nov 13","Saavor Kitchen":null,"Home Kitchen":4,"Restaurant":1},{"Day":"Nov 14","Saavor Kitchen":null,"Home Kitchen":2,"Restaurant":1},{"Day":"Nov 15","Saavor Kitchen":null,"Home Kitchen":5,"Restaurant":null},{"Day":"Nov 16","Saavor Kitchen":null,"Home Kitchen":5,"Restaurant":null},{"Day":"Oct 30","Saavor Kitchen":null,"Home Kitchen":null,"Restaurant":2},{"Day":"Oct 31","Saavor Kitchen":null,"Home Kitchen":2,"Restaurant":3}]';

var keys = ['Day', 'Saavor Kitchen', 'Home Kitchen', 'Restaurant'];
var result = keys.concat(JSON.parse(json).map(function(o) {
  return keys.map(function(key) {
    return o[key];
  });
}));

console.log(result);

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47508369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档