C#转化为json的一个问题

      DataTable dt = ...
      Dictionary<Dictionary< string, string>, Dictionary<string, string>> dict = new Dictionary<Dictionary<string, string>, Dictionary<string, string>>();
      Dictionary<string, string> list = new Dictionary<string, string>();
      foreach (DataRow dr in dt.Rows) {
        dict.Add(??????);
      }    
      base.InjectJavaScript("var chartData=" +.......JavaScriptConvert.SerializeObject(dict), true);
      
      

要怎么写才能转化为以下的这种形式

           var chartData = [{
               "year": 1995,
               "cars": 1567
           }, {
               "year": 1996,
               "cars": 1617
           }
           ];
阅读 3.3k
3 个回答

这个应该是很简单的。你只要做好model就行了,然后直接用JavaScriptConvert.SerializeObject就可以了。不需要Dictionary。

// 定义一个实体类
public class ChartData{
    public int Year{get;set;};
    public int Cars{get;set;};
}

List<ChartData> list=new List<ChartData>();
// 循环datatable然后把ChartData添加到list中
for(){
    list.Add(new ChartData{ Year=xxx,Cars=xxxxx});
}


var json=JavaScriptConvert.SerializeObject(list)


推荐用Json.NET,看文章说这个效率杠杠的,而且是微软推荐使用。

先拓展一个object方法


    /// <summary>
    /// object 转 JSON 字符串
    /// </summary>
    /// <param name="obj"></param>
    /// <param name="DateTimeFormat">时间格式化</param>
    /// <returns></returns>
    public static string ToJson(this object obj, string DateTimeFormat = "yyyy-MM-dd HH:mm:ss")
    {
        Newtonsoft.Json.Converters.IsoDateTimeConverter dtFmt = new Newtonsoft.Json.Converters.IsoDateTimeConverter();
        dtFmt.DateTimeFormat = DateTimeFormat;
        return Newtonsoft.Json.JsonConvert.SerializeObject(obj, dtFmt);
    }

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进