打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
利用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);

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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
.Net使用Newtonsoft.Json.dll(JSON.NET)对象序列化成json、反序列化json示例教程
Json.net的高级用法
再谈Newtonsoft.Json高级用法
Json.Net系列教程 3.Json.Net序列化和反序列化设置
Json to lst lst to json
【新提醒】【小贱学C#笔记之Newtonsoft.Json(三)】
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服