JSON数组序列化C#方法

        /// <summary>  
        /// dataTable转换成Json格式 JSON对应关系 三层数组
        /// </summary>  
        /// <param name="dt">需要转换的表格</param>  
        /// <returns></returns>  
        public static string Table2JsonAryAbNormallData(DataTable phenonmenondt, string station)
        {
            string json = string.Empty;
            if (phenonmenondt.Rows.Count <= 0)
            {
                return "{"total":" + 0 + ","meta":{"status":201,"msg":"无数据"}}";
            }
            List<Phenomenon_Model> phelist = new List<Phenomenon_Model>();
            for (int i = 0; i < phenonmenondt.Rows.Count; i++)
            {
                List<Reason1_Model> reason1list = new List<Reason1_Model>();
                Phenomenon_Model phe = new Phenomenon_Model();
                phe.id = i;
                phe.value3 = phenonmenondt.Rows[i][0].ToString();
                DataTable reason1dt = SqlHelper.Query(sql语句);
                for (int j = 0; j < reason1dt.Rows.Count; j++)
                {
                    List<Reason2_Model> reason2list = new List<Reason2_Model>();
                    Reason1_Model rea1 = new Reason1_Model();
                    rea1.id = j;
                    rea1.value4 = reason1dt.Rows[j][0].ToString();
                    DataTable reason2dt = SqlHelper.Query(sql语句);
                    for (int n = 0; n < reason2dt.Rows.Count; n++)
                    {
                        Reason2_Model rea2 = new Reason2_Model();
                        rea2.id = n;
                        rea2.value5 = reason2dt.Rows[n][0].ToString();
                        reason2list.Add(rea2);
                    }
                    rea1.Children = reason2list;
                    reason1list.Add(rea1);
                }
                phe.Children = reason1list;
                phelist.Add(phe);
            }

            json = Newtonsoft.Json.JsonConvert.SerializeObject(phelist);//序列化对象
            json = "{" + ""data":" + json + "," + ""meta": {"msg": "获取成功","status": 200}" + "}";
            return json;
        }
 public class Phenomenon_Model
    {
        /// <summary>
        /// ID编号
        /// </summary>
        public int id { get; set; }
        /// <summary>
        /// 现象
        /// </summary>
        public string value3 { get; set; }
        /// <summary>
        /// 子节点
        /// </summary>
        public List<Reason1_Model> Children { get; set; }
    }
 public class Reason1_Model
    {
        /// <summary>
        /// 编号ID
        /// </summary>
        public int id { get; set; }
        /// <summary>
        /// 原因1
        /// </summary>
        public string value4 { get; set; }
        /// <summary>
        /// 子节点
        /// </summary>
        public List<Reason2_Model> Children { get; set; }
    }
 public class Reason2_Model
    {
        /// <summary>
        /// ID
        /// </summary>
        public int id { get; set; }
        /// <summary>
        /// Reason2
        /// </summary>
        public string value5 { get; set; }
    }

1层JSON

    List<RefillData_Model> list = new List<RefillData_Model>();//List存数据
DataTable refilldt = fill.GetFacInfo();
                        for (int j = 0; j < refilldt.Rows.Count; j++)
                        {
                            RefillDataFac_Model refill = new RefillDataFac_Model();
                            refill.action = refilldt.Rows[j]["action"].ToString();
                            refill.facility = refilldt.Rows[j]["facility"].ToString();
                            refill.hSerial = refilldt.Rows[j]["Head_serial"].ToString();
                            refill.so = refilldt.Rows[j]["so"].ToString();
                            refill.refno = refilldt.Rows[j]["refno"].ToString();
                            refill.partNum = refilldt.Rows[j]["partno"].ToString();
                            refill.slot = refilldt.Rows[j]["slot"].ToString();
                            refill.qty = refilldt.Rows[j]["planqty"].ToString();
                            refill.Sdte = refilldt.Rows[j]["sdte"].ToString();
                            refill.stme = refilldt.Rows[j]["stme"].ToString();
                            refill.reelcut = refilldt.Rows[j]["reelcut"].ToString();
                            refill.mdte = refilldt.Rows[j]["mdte"].ToString();
                            refill.mtme = refilldt.Rows[j]["mtme"].ToString();
                            refill.soseq = refilldt.Rows[j]["soseq"].ToString();
                            refill.slotserial = refilldt.Rows[j]["SlotSerial"].ToString();
                            refilldata.Add(refill);
                        }
                        string json = JsonConvert.SerializeObject(refilldata);

以上是3层和1层的JSON数组写法 通过NewtonSoftJson 当然也可以用JSONhelper里面的拼接方法 在需要使用灵活的JSON时可以自己拼接。

反序列化

            List<AbNormallReport_Model> datalist = new List<AbNormallReport_Model>();
            datalist = Newtonsoft.Json.JsonConvert.DeserializeObject<List<AbNormallReport_Model>>(data);