如何将多维数组从c#传递给javascript
How to pass a multidimension array to javascript from c#?
本文关键字:javascript 数组 更新时间:2023-09-26
我使用的是一个JQuery图表插件,它使用多维数组接收数据点
var line1 = [['23-May-2008', 1578.55], ['20-Jun-2008', 566.5],
['25-Jul-2008', 480.88], ['22-Aug-2008', 509.84]];
如何从c#返回类似上面格式的数据?我试着生成一个与输出匹配的字符串,但它不起作用。。。
StringBuilder sb = new StringBuilder();
foreach (Stats s in perfData)
{
sb.Append("['" + String.Format("{0:MM-dd-yyyy}", p.Date) + "'], " + "[" + p.Value +"],");
}
string data = sb.ToString();
data += data.TrimEnd(new[] { ',' });
data = "[" + data + "]";
您可以使用任何JSON序列化程序(DataContractJsonSerializer,JavaScriptSerializer)将对象转换为javascript格式。但我个人更喜欢Json.Net.
List<object[]> array2D = new List<object[]>() {
new object[] { DateTime.Now.AddDays(-1000), 1578.55 },
new object[] { DateTime.Now.AddDays(-2000), 566.5 },
new object[] { DateTime.Now.AddDays(-3000), 480.88 },
new object[] { DateTime.Now.AddDays(-4000), 509.84 }
};
string jsonstr = JsonConvert.SerializeObject(array2D,new MyDateTimeConvertor());
public class MyDateTimeConvertor : Newtonsoft.Json.Converters.DateTimeConverterBase
{
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new Exception("Not implemented yet");
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteValue(((DateTime)value).ToString(@"dd-MMM-yyy"));
}
}
并且输出是有效的javascript对象
[["04-May-2009",1578.55],["08-Aug-2006",566.5],["12-Nov-2003",480.88],["15-Feb-2001",509.84]]
使用来自System.Web.Extensions
程序集的JavaScriptSerializer
:
var data = perfData.Select(p =>
new object[] { String.Format("{0:MM-dd-yyyy}", p.Date), p.Value });
var serializer = new JavaScriptSerializer();
var json = serializer.Serialize(data);
我认为您应该尝试JSON助手(JavaScript Object Notation)来进行这种操作。我找到了那个链接,希望这能有所帮助http://weblogs.asp.net/hajan/archive/2010/07/23/javascriptserializer-dictionary-to-json-serialization-and-deserialization.aspx
- 它不应该像下面这样产生你需要的东西吗
-
这不是有效的JSON,所以请检查您的插件是否接受JSON,如果是,则使用C#中的JSONserializer。
foreach (Stats s in perfData) { sb.Append("['" + String.Format("{0:MM-dd-yyyy}", p.Date) +","+ p.Value +"],"); } string data = sb.ToString(); data += data.TrimEnd(new[] { ',' }); data = "[" + data + "]";
相关文章:
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 将Javascript数组发送到控制器ASP.NET MVC
- JavaScript数组包含一个值
- 将JavaScript数组传递给函数
- javascript:数组循环
- 将数据存储在javascript数组中以供进一步使用
- 在Javascript数组中查找绝对最大值
- JavaScript数组优化以提高性能
- 在javascript数组中分散数字
- 如何发送分配列表<字符串>到JavaScript数组或可枚举对象
- Javascript数组动态
- javascript数组元素是否知道其封闭数组
- 将 JSON 数组解析为 JavaScript 数组
- 将Transform和Instance Variable转换为对象的JavaScript数组
- 使用Web Html表单创建Javascript数组
- 从重复的javascript数组结果集中只获取一行
- 如何为Javascript数组()的使用准备PHP变量
- Javascript数组和函数
- 为DataTables aoColumnDefs创建JavaScript数组(JSON格式)