c# json数组动态字段名
    根据给定的列名动态生成json数组
    List
        cols = new List
            () { "姓名","性别","年龄"};
            1.使用JArray,JObject对象
            复制代码
            //JObject
            JArray arr = new JArray();
            JObject obj = new JObject();
            foreach (var col in cols)
            {
            obj[col] = col + "_test";
            }
            arr.Add(obj);
            //获得对象的所有字段名
            var itemProperties = ((JObject)arr[0]).Properties().ToList();
            foreach (var item in itemProperties)
            {
            var v = item.Name+":"+item.Value;
            }
            string json1 = JsonEncode(arr);
            复制代码
            2.使用Datatable
            复制代码
            复制代码
            //Datatable
            DataTable dt = new DataTable();
            var row = dt.NewRow();
            foreach (var col in cols)
            {
            dt.Columns.Add(col);
            row[col] = col + "_test";
            }
            dt.Rows.Add(row);
            string json2 = JsonEncode(dt);
            //var colName=dt.Columns[0].ColumnName;
            复制代码
            复制代码
            3.使用Dynamic对象
            复制代码
            //Dynamic http://www.cnblogs.com/xuejianxiyang/p/4964739.html
            dynamic dobj = new System.Dynamic.ExpandoObject();
            var dic = (IDictionary
                )dobj;
                foreach (var col in cols)
                {
                dic[col] = col + "_test";
                }
                foreach (var fieldItem in (IDictionary
                    )dobj)
                    {//获得对象的所有字段名
                    var v = (fieldItem.Key + ": " + fieldItem.Value);
                    }
                    List
                        list = new List
                            ();
                            list.Add(dobj);
                            string json3 = JsonEncode(list);
                            复制代码
                            public static string JsonEncode
                                (T jsonstruct, bool withIndentFormat = true)
                                {
                                //var setting=new JsonSerializerSettings();
                                //setting.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
                                Formatting format = Formatting.Indented;
                                if (!withIndentFormat)
                                {
                                format = Formatting.None;
                                }
                                return JsonConvert.SerializeObject(jsonstruct, format,
                                new JsonSerializerSettings()
                                {
                                ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
                                PreserveReferencesHandling = PreserveReferencesHandling.None
                                });
                                }
        
鄂ICP备17007326号