从 JSON 数组中提取 JSON 对象


Pulling JSON object from JSON array

我已经冲浪了很长时间,以找到我问题的答案,我不得不承认我被难住了。我想我一定在这里错过了一些非常简单的东西,但现在我看不到树木的木头。

我正在尝试通过 JSON 加载一个高图表,JSON 是由 PHP 数组创建的(原因是我正在从 MySQL 中检索数据。该系列加载正常,但是我无法提取图表的标题。我的理解是,代码需要类似于json.title.text...但是这不起作用并导致脚本崩溃。任何帮助将不胜感激!

PHP 数组如下(我放了虚拟变量来简化...):

    $arr = 
array (
    array (
        'title' => array (
            'text' => 'idiot'
        ),
        'data' => array (
            '2012-12-16; 0',
            '2012-12-16; 23'
        )
    ),
    array (
        'name' => 'Sacred cows',
        'data' => array (
            98.9914,
            99.5429
        )
    ),
);
echo json_encode($arr);

生成图表的 JavaScript 如下所示:

  function marketwidget(id){
var formData = "name="+ id + "&age=31";
$.ajax({
    url : "marketwidget.php",
    type: "POST",
    data: formData,
    success: function(data, textStatus, jqXHR)
    {
            var json = JSON.parse(data)
    var len = json.length
    i = 0;
    var options = {
   title: {
        text: []
        },
        xAxis: {
            categories: []
        },
        series: []
    }
        options.title.text = json.title.text
    for (i; i < len; i++) {
        if (i === 0) {
            var dat = json[i].data,
                lenJ = dat.length,
                j = 0,
                tmp;
            for (j; j < lenJ; j++) {
                tmp = dat[j].split(';');
                options.xAxis.categories.push(tmp[0]);
            }
        } else {
                options.series.push(json[i]);
        }
    }

    $('#container').highcharts('StockChart', options);
        },
    error: function(jqXHR, textStatus, errorThrown)
    {
    }
});
}

您读取解析的 json 的方式不正确。 当我尝试json[i].title.text时,我能够访问该标题。

行中缺少数组索引:options.title.text = json.title.text 。您可以改为尝试options.title.text = json[0].title.text

<script>
  var json = JSON.parse('[{"title":{"text":"idiot"},"data":["2012-12-16; 0","2012$

  for (var i = 0; i < json.length; i++) {
     document.write(json[i].title.text); 
  }
</script>