1

私のAPIは、次のJSON構造で呼び出しに応答します。

[
    {
        "order": {
            "total": "240.0",
            "completed_at": 1358432545000
        }
    },
    {
        "order": {
            "total": "720.0",
            "completed_at": 1359474090000
        }
    }
]

ただし、Flot Graphsでデータを使用するには、このJSONを次のように構造化する必要があります。

   {
        "label":"Order",
        "dataBar":[
            [
                1358432545000,
                240.0
            ],
            [
                1325635200000 ,
                720.0
            ]
        ]
    }

次のコードを試しましたが、すべてのデータがカンマで区切られ、「[」と「]」が返されません。

var flotData = $.map(API_Response, function(i){ return [i.order.completed_at, parseInt(i.order.total)] });

どうすればいいですか?

4

1 に答える 1

7

あなたはこれを行うことができます:

var data2 = {
    label: 'Order',
    dataBar: data.map(function(v){return [
         v.order.completed_at,
         parseFloat(v.order.total)
    ]})
};

デモンストレーション(コンソールを開いてdata2を表示します)

ただし、「JSON構造」または「JSONオブジェクト」と呼べるものはないことに注意してください。

JSONでエンコードされたブラウザに送信された場合でも、単純なJavaScriptオブジェクトがあります。


オブジェクトのプロパティが呼び出されていることがわからないと仮定すると、次のorderように実行できます。

var label;
for (var k in data[0]) {
   label = k[0].toUpperCase()+k.slice(1);
   break;
}
var data2 = {
    label: label,
    dataBar: data.map(function(v){return [
         v[k].completed_at,
         parseFloat(v[k].total)
    ]})
};

(IE 8をサポートしていなければ、私が使用できたので、よりクリーンになりますObject.keys。)

于 2013-01-30T10:11:37.603 に答える