抛弃XML,JSON几大使用要点教给你!

简介:

JavaScript对象标记是基于键值对和有序列表的结构化数据基于文本的表示。尽管JSON源自JavaScript,但它在大多数主要的编程语言中都是通过本地或库来支持的。JSON通常用于在Web客户端和Web服务器之间交换信息。

抛弃XML,JSON几大使用要点教给你!

在过去15年,JSON已经在网络上普遍存在。今天,它几乎是所有公开Web服务的首选格式,同时也经常用于私人网络服务。

JSON的受欢迎程度导致许多数据库的本机JSON支持。关系数据库,如PostgreSQL和MySQL,现在支持存储和查询JSON数据。MongoDB和Neo4j等NoSQL数据库也支持JSON,尽管MongoDB在后台使用了稍微修改后的JSON二进制版本。

下面我们来看一下JSON,并讨论它的来源,它与XML相比的优势和它的缺点等等。首先,我们从一个例子开始:

抛弃XML,JSON几大使用要点教给你!

上面的结构清楚定义了一个人的某些属性。它包括姓氏,已登录次数,是否为作家,所在公司名称以及所养宠物名单和类型(在本例中仅一个)。类似于上述的结构可以从服务器传递到web浏览器或移动应用,然后这些应用将执行诸如显示数据或保存数据之类的操作以备日后参考。

JSON是一种通用数据格式,其数值类型最少:字符串,数字,布尔值,列表,对象和空值。虽然符号是JavaScript的一个子集,但这些类型都以所有常见的编程语言表示,使得JSON成为跨越语言差距传输数据的良好候选者。

为什么要使用JSON?

要了解JSON的有用性和重要性,我们必须了解一下网络互动历史。

在21世纪初,网络上的互动开始发生转变。当时,浏览器主要作为一个愚蠢的客户端显示信息,服务器做了所有努力准备显示内容。当用户点击浏览器中的链接或按钮时,将向服务器发送请求,服务器将所需的信息转换为HTML,浏览器会向用户呈现一个HTML页面。当要求浏览器重新呈现页面上的所有内容,即使只有一部分页面已更改,这种模式都是缓慢而低效的。

由于全页面重新加载成本高昂,因此网页开发人员开始寻求更新的技术来改善用户体验。同时,在Internet Explorer 5中引入的页面显示时,在后台进行Web请求的能力被证明是加载数据以便显示的可行方法。点击刷新按钮不会重新加载页面的整个内容,而是触发在后台加载的Web请求。加载内容时,可以使用浏览器中的通用编程语言JavaScript(JavaScript)来操纵、保存和显示数据。

最初,数据以XML格式传输(参见下面的示例),但XML在JavaScript中是冗长和难以管理的。JavaScript已经有对象,这是一种在语言中表达数据的方法,所以Douglas Crockford将该表达式的一部分作为新的数据交换格式规范,并将其称为JSON。JSON可以让人们更容易阅读,并让浏览器进行解析,很快Web开发人员喜欢JSON就胜过XML了。

到目前为止,JSON是用于在网络和移动客户端和后端服务之间交换数据的事实标准。

JSON与XML

如上所述,JSON替代了XML,XML在新系统中越来越少见,很容易看出为什么。以下是上面那个示例的XML版本:

抛弃XML,JSON几大使用要点教给你!

除此之外,XML在解析为JavaScript数据结构时也引入了一些歧义。将XML转换为JavaScript对象可能需要数十到数百行代码,最终需要根据解析对象进行定制。将JSON转换为JavaScript对象需要一行代码,并且不需要有关解析对象的任何知识。

JSON的限制

虽然JSON是一种相对简洁,灵活的数据格式,易于在许多编程语言中使用,但格式上还是有一些缺点。这里有五个主要的限制:

1、没有模式。一方面,这意味着程序员可以完全灵活地以任何方式表示数据。另一方面,这意味着可以非常轻松地创建错误数据。

2、仅一个数字类型:IEEE-754双精度浮点格式是很好用的,但它意味着不能利用许多编程语言中可用的多样和细微的数字类型。

3、没有日期类型。这意味着开发人员必须使用一些字符串表示日期,这会导致格式化差异,或者必须以1970年1月1日的形式表示日期。

4、没有注释。这使得程序员无法内联注释字段,需要添加额外的文档并会增加误解的可能性。

5、虽然JSON不像XML那么冗长,但它也不是最简洁的数据交换格式。对于大容量或专用服务,需要使用更高效的数据格式。

什么时候应该使用JSON?

如果程序员正在编写与浏览器或本地移动应用程序通信的软件,则应使用JSON作为数据格式,使用像XML这样的格式是一个过时的选择。

在服务器到服务器通信的情况下,可能最好使用像Apache Avro或Apache Thrift这样的序列化框架。JSON不是一个坏的选择,仍然可能正是你需要的,但不如上述两个效果好。

如果你正在使用NoSQL数据库,在支持JSON作为类型的关系数据库中,一个很好的经验法则是尽可能少地使用它。针对符合特定模式的结构化数据调整关系数据库。虽然大多数支持JSON形式更灵活的数据,但在查询这些JSON对象属性时,性能将会受到影响。

JSON是用于在Web服务器、浏览器和移动应用程序之间发送数据的格式。其简单的设计和灵活性使其易于阅读和理解,在大多数情况下,程序员可以轻松地以所选择的编程语言进行操作。缺乏严格的架构可以实现格式的灵活性,但这种灵活性有时难以确保正确阅读和编写JSON。

程序员可能需要多做一些工作来处理像Scala或Elm这样的强类型语言中的JSON,但广泛采用JSON意味着有库和实用程序来帮助完成所有最难的部分。 在构建新的Web服务时,选择JSON可能表示对相关领域缺乏了解。


本文转自d1net(转载)

相关文章
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
152 1
|
XML JSON 前端开发
【Web前端揭秘】XML与JSON:数据界的双雄对决,你的选择将如何改写Web世界的未来?
【8月更文挑战第26天】本文深入探讨了XML和JSON这两种广泛使用的数据交换格式在Web前端开发中的应用。XML采用自定义标签描述数据结构,适用于复杂层次数据的表示,而JSON则以键值对形式呈现数据,更为轻量且易解析。通过对两种格式的示例代码、结构特点及应用场景的分析,本文旨在帮助读者更好地理解它们的差异,并根据实际需求选择最合适的数据交换格式。
205 1
|
XML JSON 数据处理
C# 中的 XML 与 JSON 数据处理
在现代软件开发中,数据交换和存储需求日益增长,XML 和 JSON 成为最常用的数据格式。本文从 C# 角度出发,详细介绍如何处理这两种格式,并提供示例代码。对于 XML,我们介绍了读取、创建和写入 XML 文件的方法;对于 JSON,则展示了如何使用 Newtonsoft.Json 库进行数据解析和序列化。此外,文章还总结了常见问题及其解决方案,帮助开发者更好地应对实际项目中的挑战。
333 61
C# 中的 XML 与 JSON 数据处理
|
XML JSON 前端开发
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(支持并行网关)
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(支持并行网关)
926 3
|
12月前
|
XML JSON 数据可视化
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
本文详细介绍了不同数据集格式之间的转换方法,包括YOLO、VOC、COCO、JSON、TXT和PNG等格式,以及如何可视化验证数据集。
2717 1
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
|
12月前
|
XML JSON 前端开发
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
2102 0
|
XML JSON Java
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
本文介绍了如何使用IntelliJ IDEA和Maven搭建一个整合了Struts2、Spring4、Hibernate4的J2EE项目,并配置了项目目录结构、web.xml、welcome.jsp以及多个JSP页面,用于刷新和学习传统的SSH框架。
468 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
|
Java Spring 容器
彻底改变你的编程人生!揭秘 Spring 框架依赖注入的神奇魔力,让你的代码瞬间焕然一新!
【8月更文挑战第31天】本文介绍 Spring 框架中的依赖注入(DI),一种降低代码耦合度的设计模式。通过 Spring 的 DI 容器,开发者可专注业务逻辑而非依赖管理。文中详细解释了 DI 的基本概念及其实现方式,如构造器注入、字段注入与 setter 方法注入,并提供示例说明如何在实际项目中应用这些技术。通过 Spring 的 @Configuration 和 @Bean 注解,可轻松定义与管理应用中的组件及其依赖关系,实现更简洁、易维护的代码结构。
253 0
|
XML JSON 前端开发
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(排它条件网关)
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(排它条件网关)
302 3
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(排它条件网关)
|
XML JSON 前端开发
初学者指南:JSON 和 XML 的区别
当我们讨论数据交换格式时,JSON(JavaScript对象表示法)和 XML(可扩展标记语言)无疑是最受欢迎的两种选择。这两者各有优点和缺点,根据具体的应用场景,选择合适的格式可以显著提高开发效率和系统性能。

热门文章

最新文章