現階段的項目是採用前後端分離的思想,前端使用的是Angular.JS,後端使用ABP框架,在後端我們通過WebAPI技術來向前端提供json數據。以前是通過MVC來寫前端的代碼,感覺後端有點在控制前端的節奏,一些少量的後端代碼還是需要在HTML頁面中寫的,這次採用的這種模式,前端不需要寫一點後端的C ...
現階段的項目是採用前後端分離的思想,前端使用的是Angular.JS,後端使用ABP框架,在後端我們通過WebAPI技術來向前端提供json數據。以前是通過MVC來寫前端的代碼,感覺後端有點在控制前端的節奏,一些少量的後端代碼還是需要在HTML頁面中寫的,這次採用的這種模式,前端不需要寫一點後端的C#代碼,只負責寫自己頁面,至於說後端,只需要提供統一的json格式數據就可以,不需要管我前端如何展示。就是這樣的情況,下麵我們來看下如何將後端的數據json化。
後端數據轉換為json
假設前端需要如下的數據格式:那麼我們後端提供的josn格式就應該是這樣的,這就利用到數據格式的轉換了。
那麼我們定義相關的類,看如何實現這樣的格式。
/// <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數據。
解釋
- 屬性上面的標簽 :[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);
不需要再去實例化它,因為它自己調用的時候就自動實例化了。