开发者社区> 知与谁同> 正文

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
9607 0
使用SSH远程登录阿里云ECS服务器
远程连接服务器以及配置环境
13323 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
20275 0
腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动
在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH=$JAVA_HOME/bin/:$PATH export CLASSPATH=.
13842 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
18556 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
33245 0
使用NAT网关轻松为单台云服务器设置多个公网IP
在应用中,有时会遇到用户询问如何使单台云服务器具备多个公网IP的问题。 具体如何操作呢,有了NAT网关这个也不是难题。
35038 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
18967 0
+关注
10077
文章
2994
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载