Javascript 通过访问另一个JSON对象中的变量键创建新的JSON对象

Javascript 通过访问另一个JSON对象中的变量键创建新的JSON对象,javascript,json,Javascript,Json,我试图获取一个现有的JSON对象,并从中创建更小的JSON块,具体用于创建单独的图。下面是我使用jQuery的代码: function updateStationGraphs (bsid) { $.getJSON("includes/system/ajaxDataInterface.php", {format:'flot',target:bsid}, function(data) { var graphOptions = { series: {

我试图获取一个现有的JSON对象,并从中创建更小的JSON块,具体用于创建单独的图。下面是我使用jQuery的代码:

function updateStationGraphs (bsid) {
    $.getJSON("includes/system/ajaxDataInterface.php", {format:'flot',target:bsid}, function(data) {
        var graphOptions = {
            series: {
              lines: { show: true },
              points: { show: true }
            }
          };
        var handsetData = new Array(data[bsid].maxHandsets,data[bsid].avgHandsets);
        $.plot($('.graphHandsets'),handsetData,graphOptions);
    });

}
澄清:handsetData希望采用以下格式:

  [ { label: "Foo", data: [ [10, 1], [17, -14], [30, 5] ] },
    { label: "Bar", data: [ [11, 13], [19, 11], [30, -7] ] } ]
我的问题是当调用updateStationGraphs('A5A50000')时,例如,它报告数据[bsid]未定义。我以前也遇到过类似的问题,但我的问题是我再次重新定义了我的“数据”对象,并且使用了错误的对象。这里似乎不是这样,我不明白为什么它不允许我访问数据[bsid]

以下是假设数据的样子:

var data = {"A5A50000":{"time":{"label":"time","data":[[1244045863,"2009-06-03 16:17:43"],[1244045803,"2009-06-03 16:16:43"],[1244045743,"2009-06-03 16:15:43"],[1244045683,"2009-06-03 16:14:43"],[1244045623,"2009-06-03 16:13:43"],[1244045563,"2009-06-03 16:12:43"],[1244045503,"2009-06-03 16:11:43"],[1244045443,"2009-06-03 16:10:43"],[1244045383,"2009-06-03 16:09:43"],[1244045323,"2009-06-03 16:08:43"]]},"avgHandsets":{"label":"avgHandsets","data":[[1244045863,204.7143],[1244045803,205.9444],[1244045743,205.3333],[1244045683,205.3889],[1244045623,204.5882],[1244045563,204.8235],[1244045503,205],[1244045443,205.9412],[1244045383,205.6667],[1244045323,204.1176]]},"maxHandsets":{"label":"maxHandsets","data":[[1244045863,314],[1244045803,314],[1244045743,315],[1244045683,315],[1244045623,315],[1244045563,314],[1244045503,314],[1244045443,316],[1244045383,316],[1244045323,312]]}}};

非常感谢您的建议。提前感谢。

我测试了您的代码,一切正常。在调用
$.getJSON()
之后,我得到了正确生成的flot图

您需要确保返回的JSON数据在末尾包含变量声明和分号,如您的示例所示

换句话说,它应该是唯一的JSON

{"A5A50000":{"time":{"label":"time","data":[[1244045863.........]}}}
而不是:

var data = {"A5A50000":{"time":{"label":"time","data":[[1244045863,....

这可能就是问题所在。

事后看来,在休息和重新开始之后,我意识到当bsid='a5a50000'而不是bsid='a5a50000'时,我正在访问数据[bsid]始终检查您的案例叹息

人力资源管理。这个符号应该有用。尝试在数据[bsid]行上设置断点(使用Firebug或Visual Studio)并查看数据对象。另外,您可以使用“[]”而不是“new Array()”。我真希望它能这么简单。我添加了var声明以帮助其他人自己测试代码,我检查了响应并以正确的格式获得了正确的对象。我只是被难住了。也许我在做一些傻事,却看不见,因为那天是周五。使用您的示例并从另一个页面返回json数据,我得到了flot图。你的例子有什么遗漏吗?