使用JSON.. NET序列化JSON数据- extjs

本文关键字:JSON extjs 数据 序列化 NET 使用 | 更新日期: 2023-09-27 18:02:06

我需要做的是加载用extjs4创建的饼状数据图,其中包含来自数据库的数据存储接受这些数据,因此我需要以如下格式返回数据:

var data = [{ name: "Low", data1: "20", data2: "54", data3: "63", data4: "12" },
 { name: "Moderate", data1: "2", data2: "74", data3: "13", data4: "25" },
 { name: "Critical", data1: "42", data2: "17", data3: "3", data4: "20" },
 { name: "High", data1: "25", data2: "14", data3: "23", data4: "52"}];

所以我试图这样做在c#与json.net,我创建了一个类。cs,并把我的查询,以获得我需要的数据:

namespace charts
{
public class lineChartClass
{
    public String piedata()
    {     
{//..my queries in here..//}
   double[] data = new double[4] ;
        //data = "{ name: '"Low'", data1: " + lowtotal + "}" + ",{ name: '"Moderate'", data1: " + moderatetotal + "}" + ",{ name: '"Critical'", data1: " + criticaltotal + "}" + ",{ name: '"High'", data1: " + hightotal + "}";
       data[0]=lowtotal;
       data[1] = moderatetotal;
       data[2] = criticaltotal;
       data[3] = hightotal;
        return data;

    }//eo piedata
}
    public class ChartItem
    {
        public string Name { get; set; }
        public string Data1 { get; set; }

    }

}

并创建了我的处理程序。转换为json:
namespace charts {
public class lineChartData : IHttpHandler
{
    static string ConvertToJson()
    {
     List<ChartItem> chartItems = new List<ChartItem>();
        chartItems.Add(new ChartItem() { Name = "Low", Data1 = json[0].ToString() });
        chartItems.Add(new ChartItem() { Name = "Moderate", Data1 = json[1].ToString() });
        chartItems.Add(new ChartItem() { Name = "Critical", Data1 = json[2].ToString() });
        chartItems.Add(new ChartItem() { Name = "High", Data1 = json[3].ToString() });
        string result = new JavaScriptSerializer().Serialize(chartItems);
        return result;
    }
} 
}

然后在我的chart.js中我这样调用它:

var obj= new lineChartData();
window.store1 = Ext.create('Ext.data.JsonStore', {
fields: ['name', 'dat1', 'data2', 'data3', 'data4'],
data: obj.ConvertToJson()//generateData()
});

但是我得到这个错误:

Uncaught ReferenceError: lineChartData is not defined
lineChartData.ashxGET http://localhost/lineChartData.ashx?proxy 500 (Internal Server Error)

我刚开始学习c#和extjs,不知道如何使用json.net

提前感谢您的时间

使用JSON.. NET序列化JSON数据- extjs

为什么不在客户端和服务器端同时使用标准版本的JSON序列化工具呢?ASP。. NET有JavaScriptSerializer类&JavaScript有JSON对象(原生的ECMAScript 5和旧版本的插件,由Douglas Crockford编写)。

要在服务器端将Object转换为JSON,可以使用:

string objectJson = new JavaScriptSerializer().Serialize(yourObject);

要在客户端将对象序列化为JSON,可以使用:

string objectJson = JSON.stringify(yourObject);

要在客户端将JSON字符串反序列化为对象,可以使用:

var yourObject = JSON.parse(objectJson);

因此,你可以有一个类来表示你的图表项目在server:

public class ChartItem
{
    public string Name {get;set;}
    public string Data1 {get;set;}
    public string Data2 {get;set;}
    public string Data3 {get;set;}
    public string Data4 {get;set;}
}

并在' ConvertToJson'方法中使用它,如下所示:

List<ChartItem> chartItems = new List<ChartItem>();
// add as many item as you wish to this list
chartItems.Add(new ChartItem(){ Name = "Something", Data1 = "data1", Data2 = "data2", Data3 = "data3", Data4 = "data4 });
string result = new JavaScriptSerialize().Serialize(chartItems);
return result;

您是否在您的网页中添加了它们?正确配置:

<httpHandlers>
  <add verb="GET" path="lineChartData.ashx" type="charts.lineChartData"/>
</httpHandlers>