C#中兩種方式轉換Json的方法


方法一:拼接字符串

優點:自定義,靈活度高
缺點:編碼容易出差錯,還要處理末尾的元素

  string str = "{";
  for (int i = 0; i < list_head.Count; i++)
  {
       str += "\""+list_head[i]+"\":[";
       var value=list.Where(x => x.TypeName == list_head[i]).ToList();
          for (int j = 0; j < value.Count; j++)
                {
                    if (j== value.Count-1)
                    {
    str += "{\"ID\":\"" + value[j].ID + "\",\"Number\":\"" + value[j].Number + "\",\"TypeName\":\"" + value[j].TypeName + "\"}";
                    }
                    else
                    {
     str += "{\"ID\":\"" + value[j].ID + "\",\"Number\":\"" + value[j].Number + "\",\"TypeName\":\"" + value[j].TypeName + "\"},";
                    }
                }
                if (i== list_head.Count-1)
                {
                    str += "]";
                }
                else
                {
                    str += "],";
                }
            }
            str += "}";

方法二:使用第三方庫(Newtonsoft)

優點:直接調用第三方封裝好的方法,使用方便簡潔
缺點:有版本的區別(其實也不算缺點),沒有方法一靈活,其他都比較好

//模型類,定義Json結構
public class BaseModel
{
public List<ModelData> list_student { get; set; } = new List<ModelData>();
public List<ModelData> list_teacher { get; set; } = new List<ModelData>();
public List<ModelData> list_headteacher { get; set; } = new List<ModelData>();
public List<ModelData> list_gradedirector { get; set; } = new List<ModelData>();
public List<ModelData> list_deanr { get; set; } = new List<ModelData>();
}
//實例化,存儲數據
BaseModel model = new BaseModel();
model.list_student = list.Where(x => x.TypeName == "學生").ToList();
model.list_teacher = list.Where(x => x.TypeName == "老師").ToList();
model.list_headteacher = list.Where(x => x.TypeName == "班主任").ToList();
model.list_gradedirector = list.Where(x => x.TypeName == "年級主任").ToList();
model.list_deanr = list.Where(x => x.TypeName == "院長").ToList();
string json2=JsonConvert.SerializeObject(model);

其他代碼

//模型類
   public class ModelData
    {
        public ModelData(int iD, int number, string typeName)
        {
            ID = iD;
            Number = number;
            TypeName = typeName;
        }

        public int ID { get; set; }
        public int Number { get; set; }
        public string TypeName { get; set; }
    }
//測試數據
 class Program
    {
        static void Main(string[] args)
        {
            List<ModelData> list = new List<ModelData>(100);

            for (int i = 1; i <=100; i++)
            {
                if (i<50)
                {
                    list.Add(new ModelData(i, 10, "學生"));
                }
                else if (i>=50&&i<75)
                {
                    list.Add(new ModelData(i, 20, "老師"));
                }
                else if (i >= 75 && i <85)
                {
                    list.Add(new ModelData(i, 30, "班主任"));
                }
                else if (i >= 85 && i < 95)
                {
                    list.Add(new ModelData(i, 40, "年級主任"));
                }
                else
                {
                    list.Add(new ModelData(i, 40, "院長"));
                }
            }
            BaseModel model = new BaseModel();
            model.list_student = list.Where(x => x.TypeName == "學生").ToList();
            model.list_teacher = list.Where(x => x.TypeName == "老師").ToList();
            model.list_headteacher = list.Where(x => x.TypeName == "班主任").ToList();
            model.list_gradedirector = list.Where(x => x.TypeName == "年級主任").ToList();
            model.list_deanr = list.Where(x => x.TypeName == "院長").ToList();

            List<string> list_head = new List<string>() { "學生", "老師", "班主任", "年級主任","院長" };
            string str = "{";
            for (int i = 0; i < list_head.Count; i++)
            {
               str += "\""+list_head[i]+"\":[";
               var value=list.Where(x => x.TypeName == list_head[i]).ToList();
                for (int j = 0; j < value.Count; j++)
                {
                    if (j== value.Count-1)
                    {
                        str += "{\"ID\":\"" + value[j].ID + "\",\"Number\":\"" + value[j].Number + "\",\"TypeName\":\"" + value[j].TypeName + "\"}";
                    }
                    else
                    {
                        str += "{\"ID\":\"" + value[j].ID + "\",\"Number\":\"" + value[j].Number + "\",\"TypeName\":\"" + value[j].TypeName + "\"},";
                    }
                }
                if (i== list_head.Count-1)
                {
                    str += "]";
                }
                else
                {
                    str += "],";
                }
            }
            str += "}";
            Console.WriteLine(str);
            Console.WriteLine("-------------------------------------------------");
            string json2=JsonConvert.SerializeObject(model);
            Console.WriteLine(json2);

            Console.ReadKey();
        }

總結

方法二確實好,也有很多人使用,方法一也有自己的優點,如果格式唯一,改動小,可以直接使用方法二直接搞笑,如果格式經常需要改動,或者數據比較小的時候,用方法一,這個方便修改!主要是今天我用方法一做的程序,被老大說了,這種寫法不好,直接否掉了,讓我用第二種方法,在這記錄一下!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM