zoukankan      html  css  js  c++  java
  • 利用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);

    不需要再去实例化它,因为它自己调用的时候就自动实例化了。

  • 相关阅读:
    Kaka's Matrix Travels
    Cable TV Network
    LightOJ 1137
    SPOJ AMR11E Distinct Primes 基础数论
    HDU 5533Dancing Stars on Me 基础几何
    POJ 1014 / HDU 1059 Dividing 多重背包+二进制分解
    vijos 1180 选课 树形DP
    vijos 1313 金明的预算方案 树形DP
    LightOJ 1062
    vijos 1464 积木游戏 DP
  • 原文地址:https://www.cnblogs.com/netxiaohui/p/5764524.html
Copyright © 2011-2022 走看看