现阶段的项目是采用前后端分离的思想,前端使用的是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);

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

利用JsonConvert.SerializeObject()实现类对象的json化的更多相关文章

  1. SpringBoot实体类对象和json格式的转化

    1.引入maven依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson ...

  2. 将java中Map对象转为有相同属性的类对象(json作为中间转换)

    java中Map对象转为有相同属性的类对象(json作为中间转换) 准备好json转换工具类 public class JsonUtil { private static ObjectMapper o ...

  3. @Html.Raw() 与Newtonsoft.Json.JsonConvert.SerializeObject()

    一.后台 ViewBag.TypeList = typeList; 二.前台C# @{     var typeListFirst = ViewBag.TypeList;} 三.前台js中 var t ...

  4. 三:C#对象转换Json时的一些高级(特殊)设置;

    导航目录: Newtonsoft.Json 概述 一:Newtonsoft.Json 支持序列化与反序列化的.net 对象类型:    二:C#对象.集合.DataTable与Json内容互转示例: ...

  5. Json序列化与反序列化(对象与Json字符串的转换)--C#

    public class JsonHelper { #region Json序列化与反序列化 /// <summary> /// 将json转化为对象 /// (需要提前构造好结构一致的M ...

  6. 后台对象转JSON字符串传到前台,前台JSON字符串转对象绑定标签赋值

    /// <summary> /// 创建换货单-自动获取对应的数据(后端) /// </summary> [HttpGet] public ActionResult GetPr ...

  7. 福利->KVC+Runtime获取类/对象的属性/成员变量/方法/协议并实现字典转模型

    我们知道,KVC+Runtime可以做非常多的事情.有了这个,我们可以实现很多的效果. 这里来个福利,利用KVC+Runtime获取类/对象的所有成员变量.属性.方法及协议: 并利用它来实现字典转模型 ...

  8. OC 类对象和类加载

    //------------------------Persion类----------------------------// 1 #import "Person.h" @imp ...

  9. C++ 类的动态组件化技术

    序言: N年前,我们曾在软件开发上出现了这样的困惑,用VC开发COM组件过于复杂,用VB开发COM组件发现效率低,而且不能实现面向对象的很多特性,例如,继承,多态等.更况且如何快速封装利用历史遗留的大 ...

随机推荐

  1. EF 连接sql2000

    正常连接会提示版本低 可以先用ef连接高版本的sql然后新建好EDMX文件后,在右键xml方式打开,把ProviderManifestToken="2008" 改为2000 然后再 ...

  2. 如何解决audiodg占用内存高(停止与重启audiodg服务)

    window7电脑audiodg.exe进程占用内存很高 首先想到的办法是结束该进程,于是在任务管理器里结束进程后,内存是释放了,但是发现发现电脑没有声音 去到电脑的system32目录下双击audi ...

  3. SQL Server恢复软件SysTools SQL Recovery/SysTools SQL Server Recovery Manager

    SQL Server恢复软件SysTools SQL Recovery/SysTools SQL Server Recovery Manager http://www.systoolsgroup.co ...

  4. 一个哥们看到数据库日志不断增大 [log_reuse_wait_desc]为replication 之后的做法

    一哥们看到数据库日志不断增大 [log_reuse_wait_desc]为replication 之后的做法 一天那个哥们看到数据库日志暴涨,用sys.databases 视图看一下[log_reus ...

  5. RPC通信框架——RCF介绍

    现有的软件中用了大量的COM接口,导致无法跨平台,当然由于与Windows结合的太紧密,还有很多无法跨平台的地方.那么为了实现跨平台,支持Linux系统,以及后续的分布式,首要任务是去除COM接口. ...

  6. 你get了无数技能,为什么一事无成

      前几日看到阮一峰老师的发的一句话,颇有感慨,「你只是坐在电脑前,往网上发表了一段文字或者一张图片,随便什么,就能够接触到多少陌生的灵魂.这就是我热爱互联网的原因」.我打心底认为这是一个最好的时代, ...

  7. 文件上传之Apache commons fileupload使用

    后台servlet代码:         File file1 = null,file2=null;         String description1 = null,description2 = ...

  8. error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”

    今日VS2012 C++编译出现一堆错误: > 正在生成代码... >Code.obj : error LNK2005: "public: __thiscall std::_Co ...

  9. php安装的一点点事 ---wampserver

    安装wampserver后,需要配置一些文件 1. 首先修改httpd.conf <Directory /> Options FollowSymLinks AllowOverride No ...

  10. Visulalization Voronoi in OpenSceneGraph

    Visulalization Voronoi in OpenSceneGraph eryar@163.com Abstract. In mathematics a Voronoi diagram is ...