导读:在做项目的时候,在controller中,将List数据类型转换为了JSON字符串,那么,为什么要将其数据转换为JOSN呢?这样的转换是否是必须的,在这个转换过程中,又经过了那些步骤?注:本篇博客的所有观点,仅代表笔者目前的学习状态。

一、客户端

1.1,为什么转换

当我们看到一个网页,不管是多么复杂和简单的网页, 我们查看其源文件,看到的是一系列的文本内容。那么是不是可以理解为:一个网页,能够解析或者说能够显示的最终画面,是文本型的数据。

所以,问题就来了,当服务器端接收到客户端的请求,去向库里访问数据时,从库里面流出来的数据并不是,或者说并不一定都是文本类型。所以,我们需要将服务器端响应的数据,进行转换为客户端能够解析的数据类型。

1.2,客户端可以解析的数据类型

在客户端可以解析的数据类型,从大体上来说是文本类型。那么再细点说,有XML文件格式的,也有JOSN格式的。那么既然只要是文本类型的,客户端都可以识别读取,我们在做网页的时候,究竟转成哪一种数据类型呢?先来看看XML和JOSN的基本情况:

1.2.1,基本概念

XML(Extensible Markup Language):能够以灵活有效的方式定义管理信息的结构。以XML格式存储的数据不仅有良好的内在结构,而且由于它是W3C提出的国际标准,因而受到广大软件提供商的支持,易于进行数据交流和开发。现有网络管理标准如TMN、SNMP等的管理信息库规范决定了网管数据符合层次结构和面向对象原则,这使得以XML格式存储网管数据也非常自然,易于实现。

JSON(JavaScript Object Notation) :是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

1.2.2,XML和JOSN关系

先吐一下槽,本来是想找个性能测试的工具,来实际测试一下XML和JOSN的解析效率的,但是找了半天没有找到,然后查到了很多关于XML和JOSN解析效率的文章,我个人暂时没有亲身测试过,不过大家都那样讲,目前,我也就那么信。结论:JOSN的解析效率要高于XML。可是,问题就是,既然JOSN要由于XML,为什么XML还没有被淘汰呢?

原因:首先应该清楚他们各自的功用,XML由3个部分构成,它们分别是:文档类型定义(Document Type Definition,DTD),即XML的布局语言;可扩展的样式语言(Extensible Style Language,XSL),即XML的样式表语言;以及可扩展链接语言(Extensible Link Language,XLL)。在XML中,更为突出的是XML对于数据的格式定义更为严格,对于规范数据有它不可小觑的优势。其次,XML并不依赖于某一浏览器,而且操作极其简单。最后,XML有着自解析的功能,虽然JOSN也可以实现自解析,但是相对来说,XML有它的优势。

1.2.3,扩展BOSN

既然说JOSN优于XML,那么还有没有更优良的数据解析方式呢,那就是BSON。

BSON(Binary Serialized Document Format):是一种类json的一种二进制形式的存储格式,简称Binary JSON,它和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型。
BSON可以做为网络数据交换的一种存储形式,这个有点类似于Google的Protocol Buffer,但是BSON是一种schema-less的存储形式,它的优点是灵活性高,但它的缺点是空间利用率不是很理想,BSON有三个特点:轻量性、可遍历性、高效性。例子:{"hello":"world"} ,其中"hello"是key name,它一般是cstring类型,字节表示是cstring::= (byte*) "/x00" ,其中*表示零个或多个byte字节,/x00表示结束符;后面的"world"是value值,它的类型一般是string,double,array,binarydata等类型。

二、服务端

ADO.NET 是一组向 .NET Framework 程序员公开数据访问服务的类。 ADO.NET 为创建分布式数据共享应用程序提供了一组丰富的组件。ADO.NET的一个核心组件是:DataSet对象,相当于本地数据库,它与数据库无关的,它和远程数据库连接的桥梁就是.NET数据提供程序。它是由多个表(DataTable)构成,每个表都是一个DataTable对象。那么,当服务器端从库里将数据取出的时候,作为最原始的数据类型大概是:DataTable。可是我们说DataTable的数据传输不符合面向对象的思想,所以,我们将DataTable类型转换为List类型。后来我们又开始使用哈希表等等等。

也就是说,一个简单的从服务器端到客户端的 数据类型转换是:DataTable——List——JOSN。如果说从DataTable—List是为了迎合面向对象的思想,是一种性能结构上的优化,那么从List到JOSN可以说单纯的就是为了网页显示的需要,相对来说就仅仅只是一种功能需求了。

三、总结

那么我们说要将DataTable转换为list格式,它的原因是什么?具体的实现是什么?如果说我们到客户端的 最终形式是JOSN,那么我们又将怎样进行转换呢?当我们将服务器端的数据显示到页面上,我们经历了一个序列化的过程,当我们将数据从页面上发送至服务器请求数据,又经历了一个反序列化的过程。那么,这一个序列化和反序列化的过程是不是必须的呢?

【数据传输 1】服务器—>客户端之间的数据类型转换相关推荐

  1. QML和C ++之间的数据类型转换

    QML和C ++之间的数据类型转换 QML和C ++之间的数据类型转换 Data Ownership 基本Qt数据类型 QObject派生的类型 Qt和JavaScript类型之间的转换 QVaria ...

  2. MYSQL 与 Oracle 之间的数据类型转换

    2009-07-21 MYSQL 与 Oracle 之间的数据类型转换 关键字: mysql, oracle, 数据类型, 转换 Table 2-4 Default Data Type Mapping ...

  3. mysql oracle 数据类型转换_Mysql与Oracle之间的数据类型转换

    [转]MYSQL 与 Oracle 之间的数据类型转换

  4. 两个框架之间的数据类型转换,需要桥接技术

    两个框架之间的数据类型转换,需要桥接技术 在所有的数据类型见面添加__bridge去修饰

  5. 链接服务器,不同服务器数据库之间的数据操作。

    --********************************************************************************* -- 链接服务器,不同服务器数据 ...

  6. SQL不同服务器数据库之间的数据操作整理(完整版)(转)

    -- Blog   : http://blog.csdn.net/htl258(转载保留此信息) -- Subject: SQL不同服务器数据库之间数据操作整理 ------------------- ...

  7. Java中如何实现Date与String之间的数据类型转换

    String 数据类型转换成 Date String inputDate = "2021-04-11";Date outputDate = null;SimpleDateForma ...

  8. [OpenCV] CV_32F与CV_8U之间的数据类型转换

    OpenCV CV_32F与CV_8U之间的类型转换 文章目录 OpenCV CV_32F与CV_8U之间的类型转换 前言 一.OpenCV都有哪些数据类型 二.代码实例 总结 前言 最近在c++使用 ...

  9. QML和C++之间的数据类型转换

    在 QML 和 C++ 之间交换数据值时,QML 引擎会将它们转换为适合在 QML 或 C++ 中使用的正确数据类型. 这要求交换的数据属于引擎可识别的类型. QML 引擎为大量 Qt C++ 数据类 ...

最新文章

  1. 【Boost】boost库中thread多线程详解3——细说lock_guard
  2. 如何生成 jMeter 结果分析统计图表
  3. Nginx服务学习(6)-日志模块
  4. 肖仰华 | SIGIR 2018、WWW2018 知识图谱研究综述
  5. eclipse启动springboot项目_多模块项目中的一个Spring Boot启动错误
  6. Git修改用户名和邮箱的方法(附Git常用命令)
  7. Robust line matching through line–point invariants
  8. matlab 不确定度计算器,不确定度计算器
  9. meta分析stata教程
  10. 通过网易云歌单链接下载网易云歌曲
  11. 水滴IP告诉你:IP是什么?动态IP和静态IP有什么区别?
  12. OpenCV-证件照蓝底换成白底(或其他颜色如红色)
  13. 单元测试--Mockito之spy
  14. 夺命雷公狗—玩转SEO---38---百度快照投诉从而更新快照
  15. 手写数字识别:CNN-AlexNet
  16. Java大作业之餐厅管理系统
  17. 函数最值题目及答案_高一函数题目及答案解析
  18. 最全 MySQL主从同步与主主同步
  19. Zookeeper--简介
  20. 【王喆-推荐系统】评估篇-(task2)推荐模型评估指标

热门文章

  1. 优漫动游:带你了解UI图片比例技巧
  2. 医疗管理系统软件 linux系统,MyPatients 4.0.2 发布,医疗信息管理系统
  3. pod init 报错 can‘t modify frozen String (FrozenError) [Xcodeproj] Unknown object version (56).
  4. 转载 usb_alloc_coherent 和 usb_free_coherent
  5. 爬虫技术python爬到女性语音_python爬虫看看虎牙女主播中谁最“顶”步骤详解
  6. 用 SQL 分析不同用户群组留存率
  7. ​​如何搭建自己的魔兽世界服务器
  8. 最新可用的电脑开机密码查看工具
  9. Z-Stack 的应用层参数修改
  10. iterator的用法及概念