111

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

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

4

11 に答える 11

111
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-25T18:51:49.340 に答える
71

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

var as = JSON.parse(jstring);

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

于 2013-10-30T17:23:36.273 に答える
28
function json2array(json){
    var result = [];
    var keys = Object.keys(json);
    keys.forEach(function(key){
        result.push(json[key]);
    });
    return result;
}

この完全な説明を参照してください: http://book.mixu.net/node/ch5.html

于 2013-09-24T18:21:19.460 に答える
1
const json = '{"result":true, "count":42}';
const obj = JSON.parse(json);

console.log(obj.count);
// expected output: 42

console.log(obj.result);
// expected output: true
于 2021-09-14T15:36:14.597 に答える
1

変換したいjsonオブジェクトがあることを検討してください

const my_object = {
    "key1": "value1",
    "key2": "value2",
    "key3": "value3"
}

使用できるソリューションがいくつかあります。

1. Object.keys()Object.values()

これらの関数は、任意のオブジェクトを配列に変換します。1 つはすべてのキーを含む配列を返し、もう 1 つはすべての値を返します。

console.log(Object.keys(my_object))
// Output : ["key1", "key2", "key3"]

console.log(Object.values(my_object))
// Output : ["value1", "value2", "value3"]

最初の質問を理解できるかどうかはわかりませんが、解決策はおそらく

data.addRows(Object.values(my_object));

2.Object.entries ()

この関数は、上記の 2 つを組み合わせたものです。

console.log(Object.entries(my_object))
// Output : [["key1", "value1"],  ["key2", "value2"],  ["key3", "value3"]]

最初の質問には役に立ちませんでしたが、この機能は非常に便利なので、言及しなければなりませんでした。特に、value_がネストされたオブジェクトの場合。値が次のようなオブジェクトであるとしましょう:

const my_object = {
    "key1": {"a": 1, "b": 2},
    "key2": {"y": 25, "z": 26},
    "key3": {"much": "stuff"}
}

そして、このような配列になりたい

my_array = [
    {"key": "key1", "a": 1, "b": 2},
    {"key": "key2", "y": 25, "z": 26},
    {"key": "key3", "much": "stuff"}
]

Object.entries()すべてのキーをその値で取得するために使用する必要があります。詳細なコードから始めます。

my_array = Object.entries(my_object).map(function(entry){
   key = entry[0];
   value = entry[1];

   nested_object = value;
   nested_object.key = key;

   return nested_object;
});

console.log(my_array);
// Expected output : [
//    {"key": "key1", "a": 1, "b": 2},
//    {"key": "key2", "y": 25, "z": 26},
//    {"key": "key3", "much": "stuff"}
//]

拡散演算子を使用してコードを簡素化できます。

my_array = Object.entries(my_object).map(entry => {"key": entry[0], ...entry[1]});

console.log(my_array);
// Expected output : [
//    {"key": "key1", "a": 1, "b": 2},
//    {"key": "key2", "y": 25, "z": 26},
//    {"key": "key3", "much": "stuff"}
//]
于 2021-11-16T14:59:05.040 に答える