c#中Highcharts数据对象的JSON结果

本文关键字:JSON 结果 对象 数据 Highcharts | 更新日期: 2023-09-27 18:01:53

我试图采取一个自定义类的列表,并将其转换为MVC/c#中的JSON。我使用了json。编码和javascriptserializer都无济于事。json数据显示为&.quot;而不是单引号或双引号。这是我认为相关的代码。此数据将用于highcharts应用程序。

<<p> 我的模型/strong>
public class DataPoint
{
    public double? data { get; set; } //CTDI value
    public DateTime? DateOfScan { get; set; }
    public string Name { get; set; }
    public string Nmmber{ get; set; }
    public int PersonDatabaseID { get; set; }
    public string EquipmentName{ get; set; }
}
public class PlotData : List<DataPoint>
{
}
public class PlotListModel : List<PlotData>
{
}

我认为

foreach (PlotData pd in (PlotListModel) ViewBag.MyData)
{
    JavaScriptSerializer js = new JavaScriptSerializer();
    var jsData1 = js.Serialize(pd);
    //Or use JSON.Encode
    var jsData2 = Json.Encode(pd);
    string divID = "container" + i;
    <div id='@divID'>
        <script type='text/javascript'>
            $(function () {
                var chart = new Highcharts.Chart({
                    chart: {
                        renderTo: '@divID',
                        type: 'colummn'
                    },
                    title: {text: '@divID'},
                    tooltip: {
                        formatter: function () {
                            return 'Extra data: <b>' + this.point.Scanner + '</b>';
                        }
                    },
                    series: [{
                        name: 'Foo',
                        data: ['@jsData1']
                    }]
                });
            });
        </script>
    </div>
    i += 1;
}
When I look at the page source I see the data fields and values surrounded by the encoded quote value - &quot;

c#中Highcharts数据对象的JSON结果

你应该创建一个webapi控制器,它应该包含一个看起来像这样的方法。我假设你在这个例子中使用的是Web Api 2.0。

[Route("api/plotlist")]
[HttpGet]
public PlotListModel GetPlotList() {
    //Here's where you would instantiate and populate your model
    PlotListModel plotList; 
    /*
     * Once your model is instantiated and populated then you can
     * just return it and the serialization will be done for you
     */
    return plotList;
}
一旦你有了这个,你就可以使用ajax从你的客户端代码调用这个方法。如果使用jQuery,一个简单的客户端函数可能看起来像这样。
function retreivePlotList() {
    $.getJSON("http://<base url>/api/plotlist", function(data) { 
        //do something with data 
    });
}

这是web api类

public class PlotListController : ApiController
{
    [Route("api/plotlist")]
    [HttpGet]
    public IEnumerable<CTDIDataPoint> GetPlotList()
    {....

当我输入localhost/api/plotlist时,我得到404错误

webapiconfig.

public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }