C#-JSON的序列化和反序列化
个人博客:http://www.chenjianqu.com/
原文链接:http://www.chenjianqu.com/show-13.html
目录:
1. 前言
2. JSON简介
3. 序列化和反序列化的概念
4. .Net Framework处理JSON
5. JSON序列化
6. JSON反序列化
7. NewtonSoft.Json
8. 参考文献
前言
之前一直在.Net调用各种SDK和API,发现它们大多是通过JSON传输数据,用的时候查了很多资料,现在写一篇总结文章吧。
JSON简介
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
序列化和反序列化的概念
序列化(Serialization):将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
反序列化(deseriallization):将序列化的数据恢复为对象的过程。
JSON本质上就是JavaScript的对象,我们把携带数据的JSON对象打包成成字符串用于网络发送就是序列化过程,数据字符串数据生成JSON对象是一个反序列化的过程。
.NET Framework处理JSON
.Net库中包含了序列化和反序列化的命名空间System.Web.Script.Serialization Namespace。通过查阅官方文档(
https://docs.microsoft.com/zhcn/dotnet/api/system.web.script.serialization?view=netframework-4.7),我们可知该命名空间包含了5个类:
详情可查阅微软的官方文档。
若想在工程中使用这个库,需要将其引用进来,引用目录:
JSON序列化
现在我们开始介绍C#序列化和反序列化JSON。要想解析JSON,我们必须知道要解析的JSON对象的内容。以下我们通过一个示例来进行演示这个过程。
首先,我们有一个已经被序列JSON对象字符串,它被存放在txt文件里:
我们要根据这个字符串写出响应的C#对象,当然更简单的方法是我们复制字符串内容到http://www.bejson.com/convert/json2csharp/这个网站,可以自动把json字符串转换为对象。
然后我们把生成的代码复制到工程中。
有时候因为JSON格式不标准,比如变量命名中含有非法字符,我们复制到IDE里会报错,这个时候我们可以把变量名改成合法名字,然后在进行解析的时候也要把JSON字符串中的变量名和C#对象里的变量名改成一致。
比如我现在测试的JSON字符串里有非法字符:
由此生成的类:
类名非法。
这个时候我把/去掉,然后就OK了
接下来用.Net的Serializer进行序列化:
从上面的代码可知,我们把序列化后的字符串中的’_’替换为’/’,可以但没必要。
JSON反序列化
接下来我们演示如何从一个文件中读取JSON字符串并进行反序列化。
这txt里的结果一致:
NewtonSoft.Json
另一个解析Json的库是NewtonSoft.Json,这是他们的网站:https://www.newtonsoft.com/json。
使用起来和.Net的库差不多。如下图:
参考文献
[1]百度百科.JSON. https://baike.baidu.com/item/JSON/2462549?fr=aladdin
[2]百度百科.序列化.https://baike.baidu.com/item/%E5%BA%8F%E5%88%97%E5%8C%96/2890184?fr=aladdin
[3]微软开发文档.. JavaScriptSerializer Class.
https://docs.microsoft.com/zhcn/dotnet/api/system.web.script.serialization.javascriptserializer?view=netframework-4.7 .
C#-JSON的序列化和反序列化相关推荐
- Json的序列化和反序列化
1.引用命名空间: using System.Runtime.Serialization; 2.json的序列化和反序列化的方法: publicclass JsonHelper { ///<su ...
- 在C#中,Json的序列化和反序列化的几种方式总结
在C#中,Json的序列化和反序列化的几种方式总结 在这篇文章中,我们将会学到如何使用C#,来序列化对象成为Json格式的数据,以及如何反序列化Json数据到对象. 什么是JSON? JSON (Ja ...
- ASP.NET中JSON的序列化和反序列化
JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...
- Newtonsoft.Json 的序列化与反序列化
首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Framework和NHibernate的.我举例说明DataTable的序列化和反序列化. 创建 ...
- Json.Net系列教程 3.Json.Net序列化和反序列化设置
上节补充 首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Framework和NHibernate的.我举例说明DataTable的序列化和反序列 ...
- java newtonsoft.json_Newtonsoft.Json 的序列化与反序列化
首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Framework和NHibernate的.我举例说明DataTable的序列化和反序列化. 创建 ...
- 一起谈.NET技术,ASP.NET 中JSON 的序列化和反序列化
JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...
- C#中的Json的序列化和反序列化
Json是一种通用的数据格式,我们在数据交换的时候,经常会用到,下面介绍c#中的json序列化和反序列化,当然也可用在asp.net,silverlight,wpf中.我们在下面实例讲解如何进行Jso ...
- C# JSON字符串序列化与反序列化(转)
C# JSON字符串序列化与反序列化 C#将对象序列化成JSON字符串 public string GetJsonString() { List<Product> products = n ...
- ASP.NET Core 3.1系列(30)——Newtonsoft.Json实现JSON的序列化和反序列化
1.前言 在早期版本的ASP.NET Core项目中,Newtonsoft.Json的使用率非常高.虽然微软当前主推System.Text.Json来处理JSON的序列化和反序列化,但Newtonso ...
最新文章
- 现代 JavaScript 函数库 usuallyjs 的安装和使用
- APIO2019解题报告
- Android JNI入门第七篇——C调用Java
- 【最新合集】研究生工程伦理课程答案整理
- Python之OS模块:os.access()检验权限模式(验证文件及目录权限)
- SpringCloud集成Security安全(Config配置中心)
- CSS基础——CSS字体样式属性【学习笔记】
- JavaScript运算符及转义字符
- 华为HCSE培训教材
- 秀米编辑器如何排版svg推文,以展开为模板讲解
- 【流媒体性能测试常用指标】
- 365天挑战LeetCode1000题——Day 014 每日一题 + 最长公共子序列
- 分享自己学英语的经验
- Pippo java微服务,轻量级web开发框架,原来Filter还能这么玩
- 时间轮(TimeWheel)的设计与实现
- SDHK_Tool.Static.SS_EulerAngleConversion 欧拉角,角度转换计算
- 十八、商城 - 规格管理-模板管理(6)
- “暴力美学1”——DFS深度优先搜索
- php 采集网页 webfont,webfont中文云端字体服务推荐:有字库
- C语言开发之CMakeList(其三)