【问题标题】:Creating new JSON objects by accessing variable keys within another JSON object通过访问另一个 JSON 对象中的变量键来创建新的 JSON 对象
【发布时间】:2009-06-05 22:01:20
【问题描述】:

我正在尝试使用现有的 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);
    });

}

澄清:手机数据期待某种格式:

  [ { label: "Foo", data: [ [10, 1], [17, -14], [30, 5] ] },
    { label: "Bar", data: [ [11, 13], [19, 11], [30, -7] ] } ]

我的问题是,例如,当调用 updateStationGraphs('A5A50000') 时,它报告 data[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]]}}};

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

【问题讨论】:

  • 人力资源部。该符号应该有效。尝试在 data[bsid] 行上设置断点(使用 Firebug 或 Visual Studio)并观察数据对象。此外,您可以使用“[]”代替“new Array()”。

标签: javascript json


【解决方案1】:

我测试了你的代码,一切都很好。在$.getJSON() 调用之后,我得到了正确生成的浮点图。

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

换句话说,它应该只是 JSON。

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

代替:

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

这可能是问题所在。

【讨论】:

  • 我真希望事情就这么简单。我添加了 var 声明以帮助其他人自己测试代码,并检查响应并以正确的格式获取正确的对象。我只是难过。也许我正在做一些愚蠢的事情并且看不到它,因为那是一天结束时的星期五。
  • 好吧。使用您的示例并从另一个页面返回该 json 数据,我得到了流程图。你的例子有什么遗漏吗?
【解决方案2】:

事后看来,经过休息和重新开始后,我意识到当 bsid = 'a5a50000' 而不是 bsid = 'A5A50000' 时,我正在访问 data[bsid]。 请务必检查您的情况! 叹息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多