c 语言 json序列化,C#中json字符串的序列化和反序列化 – 万能的聪哥 – 博客园...

2966591fe80e1a10e2cc1e74d9babd7e.png0e3ea6bd97d7c2dd9d5683a911f062c5.png

今日写番茄闹钟程序,打算添加日程安排内容,使用到json格式文件的序列化和反序列化:

什么是Json ?

Json【

它是一个轻量级的数据交换格式,我们可以很简单的来读取和写它,

并且它很容易被计算机转化和生成,它是完全独立于语言的。

Json支持下面两种数据结构:

键值对的集合–各种不同的编程语言,都支持这种数据结构;

有序的列表类型值的集合–这其中包含数组,集合,矢量,或者序列,等等。

Json有下面几种表现形式:

1.对象

一个没有顺序的“键/值”,一个对象以花括号“{”开始,并以花括号”}”结束,

在每一个“键”的后面,有一个冒号,并且使用逗号来分隔多个键值对。

例如:var user = {“name”:”Manas”,”gender”:”Male”,”birthday”:”1987-8-8″}

2.数组

设置值的顺序,一个数组以中括号”[“开始,并以中括号”]”结束,

并且所有的值使用逗号分隔,

例如:

var userlist = [

{“user”:{“name”:”Manas”,”gender”:”Male”,”birthday”:”1987-8-8″}},

{“user”:{“name”:”Mohapatra”,”Male”:”Female”,”birthday”:”1987-7-7″}}

]

3.字符串

任意数量的Unicode字符,使用引号做标记,并使用反斜杠来分隔。

(注意: 引号  逗号  冒号  均为英文状态下半角符号, 且只能是双引号 )

例如: var userlist = “{\”ID\”:1,\”Name\”:\”Manas\”,\”Address\”:\”India\”}”

Newtonsoft.Json,是.Net中开源的Json序列化和反序列化工具,官方地址:http://www.newtonsoft.com/json。

具体使用:

1. 右键项目=>Nuget包管理=>添加  Newtonsoft.Json

2. 引入命名空间

1 using Newtonsoft.Json;

3. 定义类

copycode-2.gif

public class Student

{

public int ID { get; set; }

public string Name { get; set; }

public int Age { get; set; }

public string Sex { get; set; }

}

copycode-2.gif

4. 序列化和反序列化实体对象

copycode-2.gif

//序列化对象

Student one = new Student()

{ ID = 1, Name = "武松", Age = 250, Sex = "男" };

//序列化

string jsonData = JsonConvert.SerializeObject(one);

Console.WriteLine(jsonData); //显示结果

Console.ReadLine();

//反序列化对象

string str = "{\"ID\":2,\"Name\":\"鲁智深\",\"Age\":230,\"Sex\":\"男\"}";

//反序列化

Student two = JsonConvert.DeserializeObject(str);

Console.WriteLine(

string.Format("学生信息 ID:{0},姓名:{1},年龄:{2},性别:{3}",

two.ID,two.Name, two.Age,two.Sex));//显示结果

Console.ReadLine();

copycode-2.gif

输出结果:

589489-20171128140906894-1712854461.png

5. 序列化实体对象集合

copycode-2.gif

//序列化对象集合

List oneList = new List() {

new Student{ ID = 1, Name = "武大", Age = 260, Sex = "男" },

new Student{ ID = 2, Name = "武二", Age = 250, Sex = "男" },

new Student{ ID = 3, Name = "武三", Age = 240, Sex = "女" }

}; //定义对象

string jsonData = JsonConvert.SerializeObject(oneList); //序列化

Console.WriteLine(jsonData); //显示结果

Console.ReadLine();

copycode-2.gif

显示结果:

589489-20171128142501347-2002176170.png

6. 反序列化实体对象集合(这里直接使用了 5 中的jsonData 字符串  , 原谅我偷点懒 )

copycode-2.gif

List twoList = JsonConvert.DeserializeObject>(jsonData);

foreach(Student stu in twoList)

{

Console.WriteLine(

string.Format("学生信息 ID:{0},姓名:{1},年龄:{2},性别:{3}",

stu.ID, stu.Name, stu.Age, stu.Sex));//显示结果

}

Console.ReadLine();

copycode-2.gif

显示结果:

589489-20171128143151644-170817403.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547529.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PowerDesigner使用笔记

1、PowerDesigner添加字段说明 打开表设计视图>选择Columns栏目>点击“Columns and Filter”> 沟中“Comment”选项,随后便可添加列说明。如图: 2、添加表索引双击表视图进入表设计页面 > 点击Indexs栏目 > 新增一列索引 > 双击新增索…

跌倒识别 摔倒识别 -lightweight_openpose

最近做了一个跌倒检测demo,使用的是lightweight_openposefullconnection,这篇文章是以应用为主,已经在GitHub上开源啦, 源码openpose_fall_detect 为什么使用lightweight_openpose,在此之前跑了很多模型哈,…

entity framework框架生成摘要文档为空(没有元数据文档可用)的bug解决方案

简介 entity framework在vs中生成的.edmx文件,会导致摘要(说明)为空的bug,具体bug信息为“没有元数据文档可用。”,导致我们表名打点去字段时,无法预知字段代表的含义,这在开发当中也是比较致命…

ElasticSearch可视化工具Dejavu安装使用

目录 1、安装 Docker 环境2、运行 ElasticSearch 服务3、安装运行 Dejavu 服务 Dejavu 是一个 ElasticSearch 的 Web UI 工具,支持通过 JSON 和 CSV 文件导入数据,支持可视化定义 Mapping (字段映射)等。 相关描述在 https://github.com/appbaseio/dej…

介绍MFSideMenu左右滑动控件的使用

昨天刚写完侧滑菜单的实例,今天在CocoaChina网站上看到一篇非常好的侧滑菜单设计案例文章,分享给大家。http://www.cocoachina.com/macdev/uiue/2013/0716/6609.html 自从Facebook使用了左右滑动菜单导航以后,国内外各个App都竞相模仿该功能&…

艾诺迪亚4一次性完美刷经验刷金钱方法图解[亲测无需闪退游戏]

最近在玩游戏艾诺迪亚4,感觉不错就是升级太慢,于是研究了最新的刷等级刷金钱的方法,无需游戏闪退,一次性成功的方法,下面一起刷起来。 需要用的一个工具:八门神器(注意:八门神器无需…

搭建FTP服务器,设置用户权限775 ,并只许上传、禁止下载和删除

1、安装vsftpd软件包,命令如下: sudo yum -y install vsftpd 2、查看vsftpd的运行状态,命令如下: sudo netstat -nltp | grep 21 一般情况下,vsftpd安装完成后会自动启动,如下图所示通过 netstat 命令可…

mongodb replicaset shard 集群性能测试

2019独角兽企业重金招聘Python工程师标准>>> mongodb支持自动分片的功能,并且可以让数据尽可能地均匀分布在各个节点上,本身支持横向扩展。 1,环境搭建 此次性能测试对象为mongodb的replicaset自动分片功能,集群拓扑…

打油诗

嫁人不嫁造船郎,一年四季总在忙,春夏秋东不见面,回家一包臭衣裳!我是一个造船郎,背井离乡在外闯,白天累得腿发软,晚上仍为资料忙;思乡痛苦心里藏,四海漂泊习为常&#xf…

去马赛克神器 JavPlayer TG Modle 最新版

本帖最后由 cyberim 于 2019-8-28 22:13 编辑 -----知识点----- Mosaic的原理就是将1个像素的颜色填满一个小区域,所以在平面图片上是无法还原的--简单说就是单一图片的Mosaic不可逆! 但是…如果是Mosaic影片的话,一个Mosaic方格的中心点就会是一个原始影…

jQuery日期和时间插件(jquery-ui-timepicker-addon.js)中文破解版使用

简介 jQuery UI Datepicker日期选择插件很好用了,只不过只能精确到日,不能选择时间(小时分钟秒)很遗憾,而jquery-ui-timepicker-addon.js正是基于jQuery UI Datepicker的一款可选时间的插件。 官网地址:h…

Linux服务之httpd基本配置详解

当今主流的开源Web服务器软件有httpd(Apache),lighttpd,nginx,thttpd等,而httpd是迄今为止使用量多的web服务器,据统计目前httpd的全球占有量是47%左右,虽然有所下降但是使用两仍然是最多的,统计web服务器使用率的网站是&#xff…

android新建工程横屏,华为MatePad Pro构建的安卓平板横屏生态有何不同?来看看

在过去很多年中,Android 平板或者说 Android大屏设备一直受限于 Android生态的限制,无法发挥出本应具备的大屏使用体验,也正是因为这个原因,Android平板电脑一直被当做娱乐设备。在去年11月25日,华为正式发布了主打生产…

Flutter笔记:Web支持原理与实践

Flutter笔记 Web支持原理与实践 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com CSDN:https://blog.csdn.net/qq_28550263/article/details/135037756 华为开发者社区…

设置MAC 下 Vim 语法高亮显示

一:终端进入 cd /usr/share/vim/ 二: sudo vim vimrc 三:添加 syntax enablesyntax on 四:保存退出 转载于:https://www.cnblogs.com/cocoajin/p/3284604.html

外部服务发现之 ingress(一) traefik 的安装使用

Ingress其实就是从 kuberenets 集群外部访问集群的一个入口,将外部的请求转发到集群内不同的 Service 上,其实就相当于 nginx、haproxy 等负载均衡代理服务器,有的同学可能觉得我们直接使用 nginx 就实现了,但是只使用 nginx 这种…

ASP.NET MVC 3发布报错(ASP.NET MVC 3在没有安装环境的服务器上运行)的解决方案

前言 ASP.NET MVC 3在没有安装MVC3的环境的服务器上运行,就会报错,缺少引用,本文就为mvc3发布报错的解决方案。 解决方案 思路:提供ASP.NET MVC 3运行所需的的dll即可解决报错问题。 1、项目添加ASP.NET MVC 3的引用&#xff…

Python破解滑块验证码算法,完美避开人机识别

| 完美是不可能的,加个震惊!Python破解BiliBili滑块验证码,完美避开人机识别,可以有 准备工作 B站登录页 https://passport.bilibili.com/loginpython3pip install selenium (webdriver框架)pip install P…

php 分页类

2019独角兽企业重金招聘Python工程师标准>>> 分页公式&#xff1a;页数&#xff08;总记录数-1&#xff09;/每页显示记录数1&#xff1b; 借助这个公式&#xff0c;实现以下分页类&#xff1b; <?php class Fpage{ private $total; //数据表中总记录数 …

Android木马分析实验,Android木马简介与分析

本文介绍基于Android的手机恶意软件&#xff0c;是一个基础性的介绍&#xff0c;给新入门的人提供一个分析和工具指引。要分析的木马是一个2013年的syssecApp.apk&#xff0c;这个木马的分析能对Android恶意软件有个大概了解。基础&#xff1a;1 –Android应用基础Android是goo…