利用JsonConvert.SerializeObject()实现类对象的json化

 现阶段的项目是采用前后端分离的思想,前端使用的是Angular.JS,后端使用ABP框架,在后端我们通过WebAPI技术来向前端提供json数据。以前是通过MVC来写前端的代码,感觉后端有点在控制前端的节奏,一些少量的后端代码还是需要在HTML页面中写的,这次采用的这种模式,前端不需要写一点后端的C#代码,只负责写自己页面,至于说后端,只需要提供统一的json格式数据就可以,不需要管我前端如何展示。就是这样的情况,下面我们来看下如何将后端的数据json化。

后端数据转换为json

      假设前端需要如下的数据格式:那么我们后端提供的josn格式就应该是这样的,这就利用到数据格式的转换了。

那么我们定义相关的类,看如何实现这样的格式。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

/// <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此类库。

1

JsonConvert.SerializeObject();

下面看我们的代码。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

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<>

1

childrenTree.Childrens = new List<Tree2ChildrenView>();

难道我每次都要写这句吗。我们可以放到构造函数中去:

1

2

3

4

5

6

7

8

9

10

11

12

13

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了。

1

childrenTree.Childrens.Add(chchTree);

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值