[英]Use JSON.NET to serialize JSON data - c# - extjs
what i need to do is load my pie data chart created with extjs4 with data from my database the store accept this data,so i need to return my data in format that look like this:我需要做的是用我的数据库中的数据加载我用 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"}];
so im trying to do this in c# with json.net, i created a class.cs and put my queries to get the data i need:所以我试图在 c# 和 json.net 中执行此操作,我创建了一个class.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; }
}
} }
and created my handler.ashx to convert to json:并创建了我的handler.ashx以转换为 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;
}
}
}
then in my chart.js i call it like this:然后在我的chart.js我这样称呼它:
var obj= new lineChartData();
window.store1 = Ext.create('Ext.data.JsonStore', {
fields: ['name', 'dat1', 'data2', 'data3', 'data4'],
data: obj.ConvertToJson()//generateData()
});
but i get this error :但我收到此错误:
Uncaught ReferenceError: lineChartData is not defined
lineChartData.ashxGET http://localhost/lineChartData.ashx?proxy 500 (Internal Server Error)
im just starting with c# and extjs and dont know how to use json.net我刚从 c# 和 extjs 开始,不知道如何使用 json.net
thanks in advance for ur time提前感谢您的时间
Why don't you use standard versions of JSON serialization tools at both client-side and server-side.为什么不在客户端和服务器端都使用标准版本的 JSON 序列化工具。 ASP.NET has JavaScriptSerializer class & JavaScript has JSON object (native in ECMAScript 5 and a plugin for older versions, written by Douglas Crockford).
ASP.NET has JavaScriptSerializer class & JavaScript has JSON object (native in ECMAScript 5 and a plugin for older versions, written by Douglas Crockford).
To convert and Object to JSON at server, you can use:要在服务器上将 Object 转换为 JSON,您可以使用:
string objectJson = new JavaScriptSerializer().Serialize(yourObject);
To serialize object to JSON at client-side, you can use:要在客户端将 object 序列化为 JSON,您可以使用:
string objectJson = JSON.stringify(yourObject);
To deserialize a JSON string into an object in client-side, you can use:要在客户端将 JSON 字符串反序列化为 object,您可以使用:
var yourObject = JSON.parse(objectJson);
Thus you can have a class to represent your chart item at server:因此,您可以在服务器上使用 class 来表示您的图表项目:
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;}
}
and use it in your `ConvertToJson' method as follow:并在您的“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;
Have you added them in your web.config properly:您是否将它们正确添加到 web.config 中:
<httpHandlers>
<add verb="GET" path="lineChartData.ashx" type="charts.lineChartData"/>
</httpHandlers>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.