C#,入门教程(33)——万能的数据接送者json

上一篇:

C#,入门教程(32)——程序运行时的调试技巧与逻辑错误探针技术与源代码icon-default.png?t=N7T8https://blog.csdn.net/beijinghorn/article/details/126014885

作为21世纪的编程者,无论你是前端还是后端,都逃不过“json”。

一、什么是 json?

当打开中文输入法,拼音输入提示为:接送!真是缘分!

1、为什么会有 json ?

----曾经的曾经:编程时对象object一般是在内存中以二进制数据保存的,交流起来障碍重重。

----曾经:先辈们曾经尝试将对象数据转为SGML,HTML互相交流,依然困难不小。1998年2月10日,W3C(World Wide Web Consortium,万维网联盟)公布XML 1.0标准,XML诞生了。

----后来:XML依然脱不了一副高贵的模样,使用起来限制颇多。可靠性很差!

----现在:以 Newtonsoft 为代表的一系列不满足现状者,推出了高效稳定的 json 解释器。从此 json 开始了完全替代了 XML 的 “接送” 任务。

json 就是负责系统(或模块)之间进行数据传输“接送”的一种文本数据格式。

json,已经成为事实上的“数据通讯语言”。

2、json的基本定义

json就是用格式化文本描述对象object。

1、JSON 是 JavaScript 对象表示法(JavaScript Object Notation);

2、JSON 是轻量级的文本数据交换格式;

3、JSON 的独立性:几乎所有编程语言都不得不支持JSON;

4、JSON 具有自我描述性,更易理解。

{"Id" : 1,"Name" : "Truffer"
}

二、json的常见应用场景

1、开始使用 json

程序中要使用 json,需要安装相应的解析包(Packets)。

那当然是 Newtonsoft.Json 了。

很简单。

2、系统(网站)之间传输数据

这是 json 初心!

过程:

(1)对象、对象集合转为json;

(2)转为 base64 集合;或不;

(3)加密或不加密;

(4)压缩或不压缩i;

(5)生成md5验证码;

(6)将 字符集,json 和验证码,发送给对方;

收过程:

反之。

3、对象的深复制与浅复制

对象复制,是编程中常见的场景。

Person a = new Person();
Person b = a;

以上代码,属于浅复制。如同大堂给了 a 一张 中太大厦32056 的门卡。又给了 b 一张同一个房间的门卡。如果这不是你想要的结果,你想要一张另外一个房间的门卡。那么应该是:

Person b = new Person(a);

需要特别编写 Person 的一个构造函数。

这个过程,就是深复制!!!!!!!!!!!!!!!

如果 Person 嵌套有子属性,也是 class ,如此多层。那么程序写起来就很麻烦了。

程序员都怕层次!

在 json 之前的深复制,是漏洞百出的。使用 json 的深复制,极为便利、可靠、实用。

ComplexPerson a = new ComplexPerson();
ComplexPerson b = (Complex)(JsonConvert.DeserializeObject<Complex>(JsonConvert.SerializeObject(a)));

你无需再搜索任何 深复制 方法与代码了,

以40年编程经历告诉你:这是终极解决方案!

4、保存与读取数据

保存过程:

(1)对象、对象集合转为json;

(2)格式化或不格式化;

(3)加密或不加密;

(4)压缩或不压缩i;

(5)写出文件;

using Newtonsoft.Json;// JsonFormater 从后面的下载链接获取// 对象集合
// List<T> Items = ...// 格式化保存 json 文件
try {File.Save(filename, JsonFormater.Execute(JsonConvert.SerializeObject(Items)), Encoding.UTF8);
}
catch(Exception ex)
{;
}// 不格式化
try {File.Save(filename, JsonConvert.SerializeObject(Items), Encoding.UTF8);
}
catch(Exception ex)
{;
}// 分步骤
try {string jsonBuffer = JsonConvert.SerializeObject(Items);File.Save(filename, jsonBuffer, Encoding.UTF8);
}
catch(Exception ex)
{;
}

json 格式化的源程序:

json格式化的源程序icon-default.png?t=N7T8https://download.csdn.net/download/beijinghorn/85231176

读入过程:

反之。

著名的数据库mongodb,就是以(二进制)json文件保存数据。4

——————————————————————————

POWER  BY  TRUFFER.CN

下一篇:

C#,入门教程(34)——关于函数的参数之引用(ref)的一点知识与源程序icon-default.png?t=N7T8https://blog.csdn.net/beijinghorn/article/details/125411351

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

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

相关文章

中耳分析时,鼓室图有哪几种分型?

做中耳分析时&#xff0c;鼓室图有哪几种分型&#xff1f; 目前&#xff0c;临床上最常用的鼓室图分型法是由Jerger提出的&#xff0c;主要分为A型、As型、Ad型、B型和C型五种类型。 A型 正常成人的鼓室图峰补偿静态声导纳值为0.3&#xff5e;1.6 mmho&#xff08;Silman等报…

【Linux】环境基础开发工具的使用之gcc详解(二)

前言&#xff1a;上一篇文章中我们讲解了Linux下的vim和yum的工具的使用&#xff0c;今天我们将在上一次的基础上进一步的讲解开放工具的时候。 &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f449; 专栏分类:Linux的深度刨析 &#x1f448; &#x1f4a…

Jmeter学习系列之五:基础线程组(Thread Group)

前言 线程组是一系列线程的集合,每一个线程代表着一个正在使用应用程序的用户。在 jmeter 中,每个线程意味着模拟一个真实用户向服务器发起请求。 在 jmeter 中,线程组组件运行用户设置线程数量、初始化方式等等配置。 例如,如果你设置线程数为 100,那么 jmeter 将创建…

【python接口自动化】- PyMySQL数据连接

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

1E,Jarvis March

四个问题&#xff1a; 一&#xff0c;Jarvis March算法借鉴了什么算法&#xff1f; 二&#xff0c;如何确定初始点 三&#xff0c;如何获取凸包的边&#xff1f; 四&#xff0c;Jarvis March算法的好处在哪里&#xff1f; 首先看第一个问题&#xff0c; 一&#xff0c;Jarvis …

vue2 el-form 两个时间框(第一个时间框是只能选择当前时间,之前的是不允许选择,第二个时间框是第一个时间的当前的时间后30天后可以选择的)

<template><div id"app"><el-form :model"form"><el-form-item label"预签时间"><el-date-picker v-model"form.t2" type"date" placeholder"选择预签时间" changepreSigning/><…

从第一性原理看大模型Agent技术

引 一个乐观主义者的悲观估计 随着大规模模型技术的兴起&#xff0c;我们正处于一个崭新的智能时代的黎明。我们有一个大胆的预测&#xff0c;未来的5到10年将可能带来一场大变局&#xff1a;99%的开发、设计和文字工作将被AI接管。这不仅仅是一个想象&#xff0c;而是对未来可…

LeetCode 热题 100 | 链表(上)

目录 1 基础知识 1.1 空指针 1.2 结构体 1.3 指针访问 1.4 三目运算符 2 160. 相交链表 3 206. 反转链表 4 234. 回文链表 菜鸟做题第三周&#xff0c;语言是 C 1 基础知识 1.1 空指针 使用 nullptr 来判断是否为空指针&#xff1a; if (headA nullptr) …

模拟钉钉官网动画

实现思路&#xff1a;利用粘性定位sticky&#xff0c;以及滚动事件实现。首先我们应该设置滚动动画开始位置和结束位置 &#xff0c;然后根据位置计算透明度或者transform&#xff0c;scale的值。 首先根据上述图线计算属性值&#xff0c;代码如下&#xff1a; function creat…

Go语言在构建HTTP代理时的优势和挑战

Go语言&#xff0c;又称Golang&#xff0c;是一种开源的、静态类型的、编译型的编程语言。它在设计时考虑到了性能、并发性和简洁性&#xff0c;因此在构建网络应用方面表现优异。特别是在构建HTTP代理时&#xff0c;Go语言展现出了一些独特的优势&#xff0c;但也存在一些挑战…

鸿蒙开发-UI-页面路由

鸿蒙开发-UI-组件 鸿蒙开发-UI-组件2 鸿蒙开发-UI-组件3 鸿蒙开发-UI-气泡/菜单 文章目录 一、基本概念 二、页面跳转 1.router基本概念 2.使用场景 3.页面跳转参数传递 三、页面返回 1.普通页面返回 2.页面返回前增加一个询问框 1.系统默认询问框 2.自定义询问框 总…

Linux基础知识合集

整理了一下学习的一些关于Linux的一些基础知识&#xff0c;同学们也可以通过公众号菜单栏查看&#xff01; 一、基础知识 Linux基础知识 Linux命令行基础学习 Linux用户与组概念初识 Linux文件与目录权限基础 Linux中文件内容的查看 Linux系统之计划任务管理 二、服务器管理 Vm…