个人博客: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的序列化和反序列化相关推荐

  1. Json的序列化和反序列化

    1.引用命名空间: using System.Runtime.Serialization; 2.json的序列化和反序列化的方法: publicclass JsonHelper { ///<su ...

  2. 在C#中,Json的序列化和反序列化的几种方式总结

    在C#中,Json的序列化和反序列化的几种方式总结 在这篇文章中,我们将会学到如何使用C#,来序列化对象成为Json格式的数据,以及如何反序列化Json数据到对象. 什么是JSON? JSON (Ja ...

  3. ASP.NET中JSON的序列化和反序列化

    JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...

  4. Newtonsoft.Json 的序列化与反序列化

    首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Framework和NHibernate的.我举例说明DataTable的序列化和反序列化. 创建 ...

  5. Json.Net系列教程 3.Json.Net序列化和反序列化设置

    上节补充 首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Framework和NHibernate的.我举例说明DataTable的序列化和反序列 ...

  6. java newtonsoft.json_Newtonsoft.Json 的序列化与反序列化

    首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Framework和NHibernate的.我举例说明DataTable的序列化和反序列化. 创建 ...

  7. 一起谈.NET技术,ASP.NET 中JSON 的序列化和反序列化

    JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...

  8. C#中的Json的序列化和反序列化

    Json是一种通用的数据格式,我们在数据交换的时候,经常会用到,下面介绍c#中的json序列化和反序列化,当然也可用在asp.net,silverlight,wpf中.我们在下面实例讲解如何进行Jso ...

  9. C# JSON字符串序列化与反序列化(转)

    C# JSON字符串序列化与反序列化 C#将对象序列化成JSON字符串 public string GetJsonString() { List<Product> products = n ...

  10. ASP.NET Core 3.1系列(30)——Newtonsoft.Json实现JSON的序列化和反序列化

    1.前言 在早期版本的ASP.NET Core项目中,Newtonsoft.Json的使用率非常高.虽然微软当前主推System.Text.Json来处理JSON的序列化和反序列化,但Newtonso ...

最新文章

  1. 现代 JavaScript 函数库 usuallyjs 的安装和使用
  2. APIO2019解题报告
  3. Android JNI入门第七篇——C调用Java
  4. 【最新合集】研究生工程伦理课程答案整理
  5. Python之OS模块:os.access()检验权限模式(验证文件及目录权限)
  6. SpringCloud集成Security安全(Config配置中心)
  7. CSS基础——CSS字体样式属性【学习笔记】
  8. JavaScript运算符及转义字符
  9. 华为HCSE培训教材
  10. 秀米编辑器如何排版svg推文,以展开为模板讲解
  11. 【流媒体性能测试常用指标】
  12. 365天挑战LeetCode1000题——Day 014 每日一题 + 最长公共子序列
  13. 分享自己学英语的经验
  14. Pippo java微服务,轻量级web开发框架,原来Filter还能这么玩
  15. 时间轮(TimeWheel)的设计与实现
  16. SDHK_Tool.Static.SS_EulerAngleConversion 欧拉角,角度转换计算
  17. 十八、商城 - 规格管理-模板管理(6)
  18. “暴力美学1”——DFS深度优先搜索
  19. php 采集网页 webfont,webfont中文云端字体服务推荐:有字库
  20. C语言开发之CMakeList(其三)

热门文章

  1. 怎么查看数据库服务器型号,如何查看服务器数据库类型
  2. Html input 标签
  3. 状态管理之cookie使用及其限制、session会话
  4. ef core中如何实现多对多的表映射关系
  5. ASP .NET Core 2.0 MVC 发布到 IIS 上以后 无法下载apk等格式的文件
  6. apm驱动与板级驱动
  7. js 刷新页面window.location.reload();
  8. mysql(mariadb)重装
  9. flash FMS的一些最优参数设置
  10. CVPR2021 最佳论文候选—提高图像风格迁移的鲁棒性