利用JsonConvert.SerializeObject()實現類對象的json化


       現階段的項目是采用前后端分離的思想,前端使用的是Angular.JS,后端使用ABP框架,在后端我們通過WebAPI技術來向前端提供json數據。以前是通過MVC來寫前端的代碼,感覺后端有點在控制前端的節奏,一些少量的后端代碼還是需要在HTML頁面中寫的,這次采用的這種模式,前端不需要寫一點后端的C#代碼,只負責寫自己頁面,至於說后端,只需要提供統一的json格式數據就可以,不需要管我前端如何展示。就是這樣的情況,下面我們來看下如何將后端的數據json化

后端數據轉換為json

      假設前端需要如下的數據格式:那么我們后端提供的josn格式就應該是這樣的,這就利用到數據格式的轉換了。

image

那么我們定義相關的類,看如何實現這樣的格式。

    /// <summary>
    /// 第一大類
    /// </summary>
    public class TreeView
    {
        [JsonProperty("id")]
        public int Id { get; set; }
        [JsonProperty("text")]
        public string Text { get; set; }
        [JsonProperty("children")]
        public IList<TreeChildrenView> Childrens{ get; set; }
    }
    /// <summary>
    /// 第一大類中包含的第二大類
    /// </summary>
    public class TreeChildrenView
    {
        [JsonProperty("id")]
        public int Id { get; set; }
        [JsonProperty("text")]
        public string Text { get; set; }
        [JsonProperty("children")]
        public IList<Tree2ChildrenView> Childrens { get; set; }
    }
    /// <summary>
    /// 第二大類包含的第三大類
   /// </summary>
    public class Tree2ChildrenView
    {
        [JsonProperty("id")]
        public int Id { get; set; }
        [JsonProperty("text")]
        public string Text { get; set; }
    }

我們后端需要進行josn化,就需要引用Newtonsoft.Json此類庫。

JsonConvert.SerializeObject();

下面看我們的代碼。

        static void Main(string[] args)
        {
            var treeView = new TreeView()
            {
                Id=1,
                Text = "陝西",
            };
            var childrenTree = new TreeChildrenView()
            {
                Id=2,
                Text = "寶雞市"
            };
            var chchTree = new Tree2ChildrenView()
            {
                Id=3,
                Text = "眉縣"
            };
            childrenTree.Childrens = new List<Tree2ChildrenView>();
            childrenTree.Childrens.Add(chchTree);
            treeView.Childrens=new List<TreeChildrenView>();
            treeView.Childrens.Add(childrenTree);
            string json = JsonConvert.SerializeObject(treeView);
            Console.WriteLine(json);
            Console.ReadLine();
        }

我們可以看到只使用了一句轉換代碼。我們就可以得到具體的json數據。

image

解釋

  •   屬性上面的標簽 :[JsonProperty("id")]

意思是在json過程中將大寫的Id轉換為小寫的。其余的意思一樣。

  • 實例化List<>
 childrenTree.Childrens = new List<Tree2ChildrenView>();

難道我每次都要寫這句嗎。我們可以放到構造函數中去:

    public class TreeView
    {
        public TreeView()
        {
            this.Childrens=new List<TreeChildrenView>();
        }
        [JsonProperty("id")]
        public int Id { get; set; }
        [JsonProperty("text")]
        public string Text { get; set; }
        [JsonProperty("children")]
        public IList<TreeChildrenView> Childrens{ get; set; }
    }

這樣我們每次就直接使用就OK了。

            childrenTree.Childrens.Add(chchTree);

不需要再去實例化它,因為它自己調用的時候就自動實例化了。


免責聲明!

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



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