抛弃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(转载)

相关文章
|
3月前
|
XML 存储 JSON
Python学习 -- 常用数据交换格式(CSV、XML、JSON)
Python学习 -- 常用数据交换格式(CSV、XML、JSON)
31 0
|
3月前
|
XML JSON 数据格式
xml与JSON的区别
xml与JSON的区别
30 1
|
2月前
|
XML 机器学习/深度学习 JSON
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
29 0
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
|
17天前
|
XML JSON JavaScript
Java中XML和JSON的比较与应用指南
本文对比了Java中XML和JSON的使用,XML以自我描述性和可扩展性著称,适合结构复杂、需验证的场景,但语法冗长。JSON结构简洁,适用于轻量级数据交换,但不支持命名空间。在Java中,处理XML可使用DOM、SAX解析器或XPath,而JSON可借助GSON、Jackson库。根据需求选择合适格式,注意安全、性能和可读性。
26 0
|
23天前
|
XML JSON JavaScript
使用JSON和XML:数据交换格式在Java Web开发中的应用
【4月更文挑战第3天】本文比较了JSON和XML在Java Web开发中的应用。JSON是一种轻量级、易读的数据交换格式,适合快速解析和节省空间,常用于API和Web服务。XML则提供更强的灵活性和数据描述能力,适合复杂数据结构。Java有Jackson和Gson等库处理JSON,JAXB和DOM/SAX处理XML。选择格式需根据应用场景和需求。
|
3月前
|
XML 存储 JSON
详细比较JSON和XML这两种数据格式
详细比较JSON和XML这两种数据格式
109 2
|
4月前
|
XML 存储 JSON
实现XML与JSON转换,实测这个方法最便捷
XML和JSON是当今最常用的两种数据格式,在数据交换和存储领域占有重要地位。XML以其树状结构和可扩展性被广泛使用,而JSON则以其轻量级和易读性受到开发者的青睐。有时候,为了更好地利用它们的优点解决数据共享、数据处理和数据存储等问题,我们需要将这两种格式进行转换。本文将介绍如何使用Java实现将XML格式转换成JSON格式。
|
4月前
|
XML 存储 JSON
C# 对象存储 (轻松实现序列化 | Xml | Json | 加密 | 压缩 | 注册表 | Redis)
开发时经常会遇到需要保存配置的情况,最常见的实现方式是将对象序列化成Json,再写入文件并保存到本地磁盘。 本文将使用开源库**ApeFree.DataStore**来替换原有的对象存储过程,实现一个可以随意切换存储方式的对象存储方法。 ApeFree.DataStore是一款可配置的对象存储库,支持在不同平台/介质中对内存中的对象进行存储与还原(如本地存储、注册表存储)。支持配置序列化格式(如Json、Xml),支持配置压缩算法(如GZip、Defalte),支持配置加密算法(如AES、RSA)。
68 0
C# 对象存储 (轻松实现序列化 | Xml | Json | 加密 | 压缩 | 注册表 | Redis)
|
4月前
|
XML 存储 JSON
C# | JSON格式与XML格式互相转换
JSON格式与XML格式是目前互联网上使用最为广泛的数据交换格式之一,而两种格式各自有着自己的特点和优势。 在实际开发中,我们经常需要将数据在不同的系统或模块之间进行传递和转换,而JSON格式和XML格式的互相转换是一项非常基础和必要的技能。 同时,对于需要将数据存储在不同的介质中的应用场景,比如在移动端本地存储数据,或者在服务器端将数据保存到文件或数据库中,也需要将JSON或XML格式进行相应的转换。 因此,熟练掌握JSON与XML格式互相转换的方法对于开发人员来说是非常重要的。在本文中,我们将介绍常用的JSON和XML互相转换的方法及其实现。
58 0
C# | JSON格式与XML格式互相转换