JSONオブジェクトをJavaScript配列に変換する方法は?


83

JSONオブジェクト文字列をJavaScript配列に変換する必要があります。

これは私のJSONオブジェクトです:

{"2013-01-21":1,"2013-01-22":7}

そして私は持っていたい:

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

data.addRows([
    ['2013-01-21', 1],
    ['2013-01-22', 7]
]);

どうすればこれを達成できますか?


1
不正行為->string.split(',')
adeneo 2013年

1
@adeneo彼は配列内の配列を望んでいます、あなたの方法ではそれはただ1つの配列になります
salexch 2013年

回答:


82
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);

http://jsfiddle.net/MV5rj/


私はこのようなものが欲しいです:2013-01-21 ==> 1 2013-01-22 ==> 7(ハッシュテーブルのように)
user1960311 2013年

@ user1960311それはあなたが今持っているものです
イアン

56

整形式のJSON文字列がある場合は、次のことができるはずです。

var as = JSON.parse(jstring);

AJAXを介して配列を転送するときは、常にこれを行います。


3
JSON.parse()の場合は+1。この時点では、広範なブラウザのサポートを持っていますcaniuse.com/json
siliconrockstar

15
これはオブジェクトを返すようですが、配列は返しません。正しい ?
フェル2016

2
シリアル化したオブジェクトまたはオブジェクトのコレクションが返されます。
aggaton 2016

IMOは、この優れた回答を実行しました。
simhumileco

30

あなたが持っているとしましょう:

var j = {0: "1", 1: "2", 2: "3", 3: "4"};

次の方法で値を取得できます。

Object.values(j)

出力:

["1", "2", "3", "4"]

7
これを読む人は誰でも...代わりにObject.valuesを使用してください!
ニコヴァンベレ


15

これで問題が解決します。

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);

またはObject.entries()メソッドを使用する:

console.log(Object.entries(json_data));

どちらの場合も、出力は次のようになります。

/* output: 
[['2013-01-21', 1], ['2013-01-22', 7]]
*/

2

このようにオブジェクトアイテムを配列に挿入できます

let obj = {
  '1st': {
    name: 'stackoverflow'
  },
  '2nd': {
    name: 'stackexchange'
  }
};
 
 let wholeArray = Object.keys(obj).map(key => obj[key]);
 
 console.log(wholeArray);


-7

これと同じくらい簡単です!

var json_data = {"2013-01-21":1,"2013-01-22":7};
var result = [json_data];
console.log(result);

1
これにより、1つのオブジェクト(jsonデータオブジェクト)を含む配列が作成されます。
ミカサンドランド2017

@ Shivam、それは役に立ちましたか?
CCC
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.