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,在此之前跑了很多模型哈,…

转:PHP网站在Linux服务器上安全设置方案

PHP网站在Linux服务器上安全设置方案 本文总结了PHP网站在Linux服务器上一些安全设置(ps:还有一些设置给忘了),在《lnmp一键安装包》大多数参数已经包含,如果有什么更多的设置,大家一起讨论学习 PHP安全配置…

南开大学c语言试题,南开大学二级C语言试题库,共71页

内容简介:南开大学二级C语言试题库,共71页1:下列程序的功能是:将大于整数m且紧靠m的k个素数存入数组xx。请编写函数num(int m,int k,int xx[])实现函数的要求 ,最后调用函数readwriteDAT()把结果输出到文件out.dat中。例如&#x…

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,感觉不错就是升级太慢,于是研究了最新的刷等级刷金钱的方法,无需游戏闪退,一次性成功的方法,下面一起刷起来。 需要用的一个工具:八门神器(注意:八门神器无需…

决定c++语言中函数的返回值类型的是,全国2009年10月高等教育自学考试C++程序设计试题及部分参考答案...

全国2009年10月高等教育自学考试C程序设计试题课程代码:04737一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1.对…

搭建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自动分片功能,集群拓扑…

entity framework使用技巧

1、无需先查询数据的修改方法 // 将创建的data实体添加到ObjectContextdb.Data.Attach(data);// 手动设置状态为修改 db.ObjectStateManager.ChangeObjectState(data, EntityState.Modified);db.SaveChanges(); 2、嵌套Action(页面) Html.Action("l…

一维离散小波c语言,《二维离散小波分解的C语言实现》》-毕业论文.doc

PAGE高等教育自学考试毕业论文(设计)题 目: 二维离散小波分解的C语言实现摘 要小波变换用于图像处理是小波变换应用效果比较突出的领域之一。由于图像是二维信号,因此首先需要把小波变换由一维推广到二维。本文在一维离散Mallat算法的基础上&#xff0c…

基于Python的开源人脸识别库,离线识别率高达99.38%

使用 dlib 顶尖的深度学习人脸识别技术构建,在户外脸部检测数据库基准(Labeled Faces in the Wild benchmark)上的准确率高达 99.38%。 这也提供了一个简单的 face_recognition 命令行工具,你可以打开命令行中任意图像文件夹&…

打油诗

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

entity framework不查数据库修改或排除指定字段集合通用方法

其中DataDBEntities为数据库实体对象,代码如下: 下载地址:http://files.cnblogs.com/stone_w/EFDBHelper.zip using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Reflection;using System.D…

去马赛克神器 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…

超松弛迭代法解线性方程组c语言,超松弛迭代法解线性方程组.doc

PAGEPAGE 2姓名:___________________________设计题目:超松弛迭代法解线性方程组专业:摘要本文是在matlab环境下熟悉的运用计算机编程语言并结合超松弛变量超松弛迭代法的理论基础对方程组求解。首先,本文以微分方程边值问题为例,导出了离散化后线性方程…