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

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

后端数据转换为json

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

利用JsonConvert.SerializeObject()实现类对象的json化_第1张图片

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

?
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
///
  /// 第一大类
  ///
  public class TreeView
  {
      [JsonProperty( "id" )]
      public int Id { get; set ; }
      [JsonProperty( "text" )]
      public string Text { get; set ; }
      [JsonProperty( "children" )]
      public IList Childrens{ get; set ; }
  }
  ///
  /// 第一大类中包含的第二大类
  ///
  public class TreeChildrenView
  {
      [JsonProperty( "id" )]
      public int Id { get; set ; }
      [JsonProperty( "text" )]
      public string Text { get; set ; }
      [JsonProperty( "children" )]
      public IList Childrens { get; set ; }
  }
  ///
  /// 第二大类包含的第三大类
///
  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();
     childrenTree.Childrens. Add (chchTree);
     treeView.Childrens=new List();
     treeView.Childrens. Add (childrenTree);
     string json = JsonConvert.SerializeObject(treeView);
     Console.WriteLine(json);
     Console.ReadLine();
}

我们可以看到只使用了一句转换代码。我们就可以得到具体的json数据。

image

解释

  •   属性上面的标签 :[JsonProperty("id")]

意思是在json过程中将大写的Id转换为小写的。其余的意思一样。

  • 实例化List<>
?
1
childrenTree.Childrens = new List();

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
public class TreeView
{
     public TreeView()
     {
         this.Childrens=new List();
     }
     [JsonProperty( "id" )]
     public int Id { get; set ; }
     [JsonProperty( "text" )]
     public string Text { get; set ; }
     [JsonProperty( "children" )]
     public IList Childrens{ get; set ; }
}

这样我们每次就直接使用就OK了。

?
1
childrenTree.Childrens. Add (chchTree);

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

我曾七次鄙视自己的灵魂, 第一次,当它本可进取时,却故作谦卑; 第二次,当它空虚时,用爱欲来填充; 第三次,在困难和容易之间,它选择了容易; 第四次,它犯了错,却借由别人也会犯错来宽慰自己; 第五次,它自由软弱,却把它认为是生命的坚韧; 第六次,当它鄙夷一张丑恶的嘴脸时,却不知那正是自己面具中的一副; 第七次,它侧身于生活的污泥中虽不甘心,却又畏首畏尾。

转载自:http://www.cnblogs.com/netxiaohui/p/5764524.html
想了解更多的知识,欢迎加入651308349、627336556  技术开发交流群,会有意想不到的收获~~~!!!


你可能感兴趣的:(利用JsonConvert.SerializeObject()实现类对象的json化)