如何构建HighCharts数据系列以通过ajax调用匹配返回的Json

时间:2017-12-05 09:33:00

标签: javascript jquery json ajax highcharts

我正在尝试使用从.NET控制器返回的JSON构建Highchart。数据的格式如下(在控制器中):

var data = new
        {
             sentiment = new[]
             {
              new { value = "Positive", data = positiveScore.ToString() },
              new { value = "Negative", data = negativeScore.ToString() },
              new { value = "Neutral", data = neutralScore.ToString() }
            }
        };

        return Json(data, JsonRequestBehavior.AllowGet);

我收到的数据如下:

Data structure

我的Highchart按以下方式构建:

function sentimentAnalysisData(data)
//$(document).ready(function ()
{
var chart = new Highcharts.Chart({
    chart: {
        plotBackgroundColor: null,
        plotBorderWidth: null,
        plotShadow: false,
        type: 'pie',
        renderTo: 'highchart'
    },
    title: {
        text: 'Sentiment Analysis'
    },
    tooltip: {
        pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
    },
    plotOptions: {
        pie: {
            allowPointSelect: true,
            cursor: 'pointer',
            dataLabels: {
                enabled: true,
                format: '<b>{point.name}</b>: {point.percentage:.1f} %',
                style: {
                    color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'
                }
            }
        }
    },
    series: [{data}]


    //});
})
};

传递给我的函数的data参数实际上是您在我提供的图像中可以看到的数据。我通过ajax调用获得了一个GET请求,在那里我检索了数据,然后,在“on success”回调中,我正在调用这个函数来构建图表。

我的问题如下:生成Highchart,我可以在我的前端看到它,但由于我的数据以错误的方式传递到series字段,因此图表主体实际上是空的,没有数据显示。我试图在途中生成它,我也试图遍历对象,在两个数组中解析它并使用那些数组(一个用于描述字符串,一个用于值)但我遗漏了一些东西。有用的想法吗?

1 个答案:

答案 0 :(得分:1)

我能够通过以下方式解决我的问题:

我改变了构建JSON的方式,以匹配饼图结构,其中我有一个名称和一个值部分(名称部分必须注明为&#34; name&#34;,并且值为&#34; Y&#34)

 var data = new[]
            {
              new { name = "Positive", y = positiveScore },
              new { name = "Negative", y = negativeScore },
              new { name = "Neutral" , y = neutralScore }

            };

        return Json(data, JsonRequestBehavior.AllowGet);

通过这种方式,我得到了我正在寻找的确切结构。此外,我从y中删除了.toString(),因为Highchart需要一个数值,而不是一个字符串。如果省略此部分,则会收到以下错误:

  

发送到series.data的字符串值,期望如果你发生了他的号码   传入一个字符串作为数据点