如何将JSON对象转换为JavaScript数组

use*_*311 64 javascript json

我需要将JSON对象字符串转换为JavaScript数组.

这是我的JSON对象:

{"2013-01-21":1,"2013-01-22":7}
Run Code Online (Sandbox Code Playgroud)

我希望:

var data = new google.visualization.DataTable();
data.addColumn('string', 'Topping');
data.addColumn('number', 'Slices');

data.addRows([
    ['2013-01-21', 1],
    ['2013-01-22', 7]
]);
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

sal*_*xch 59

var json_data = {"2013-01-21":1,"2013-01-22":7};
var result = [];

for(var i in json_data)
    result.push([i, json_data [i]]);


var data = new google.visualization.DataTable();
data.addColumn('string', 'Topping');
data.addColumn('number', 'Slices');
data.addRows(result);
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/MV5rj/


agg*_*ton 43

如果你有一个结构良好的JSON字符串,你应该能够做到

var as = JSON.parse(jstring);
Run Code Online (Sandbox Code Playgroud)

我通过AJAX传输数组时一直这样做.

  • 这似乎返回一个Object而不是数组.对 ? (11认同)
  • 为JSON.parse()+1.此时它具有广泛的浏览器支持:http://caniuse.com/json (3认同)
  • 它将返回您序列化的任何对象或对象集合。 (2认同)

Rog*_*eto 16

function json2array(json){
    var result = [];
    var keys = Object.keys(json);
    keys.forEach(function(key){
        result.push(json[key]);
    });
    return result;
}
Run Code Online (Sandbox Code Playgroud)

请参阅此完整说明:http://book.mixu.net/node/ch5.html

  • 这不保留密钥. (4认同)

mva*_*ebr 12

假设你有:

var j = {0: "1", 1: "2", 2: "3", 3: "4"};
Run Code Online (Sandbox Code Playgroud)

您可以通过以下方式获取值:

Object.keys(j).map(function(_) { return j[_]; })
Run Code Online (Sandbox Code Playgroud)

输出:

["1", "2", "3", "4"]
Run Code Online (Sandbox Code Playgroud)

  • 无论谁读到这个......请使用[Object.values](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values)! (7认同)
  • IE 不支持_任何东西_。兼容和不兼容真的很重要吗? (3认同)

Rak*_*rma 10

这将解决问题:

const json_data = {"2013-01-21":1,"2013-01-22":7};

const arr = Object.keys(json_data).map((key) => [key, json_data[key]]);

console.log(arr);
Run Code Online (Sandbox Code Playgroud)


NuO*_*One 8

您可以将对象项插入到数组中,如下所示

 
 let obj2 = {"2013-01-21":1,"2013-01-22":7}
 
 console.log(Object.keys(obj2).map(key => [key, obj2[key]]))

let obj = {
  '1st': {
    name: 'stackoverflow'
  },
  '2nd': {
    name: 'stackexchange'
  }
};

// you can use Object.values(obj)
console.log(Object.values(obj))
 
// or you can use this instead. 
 let wholeArray = Object.keys(obj).map(key => obj[key]);

 
 console.log(wholeArray);
 console.log(Object.values(obj));
Run Code Online (Sandbox Code Playgroud)