所有文章 > API术语解释 > JSON API vs XML API:数据格式之争
JSON API vs XML API:数据格式之争

JSON API vs XML API:数据格式之争

在数字化的世界中,API就像是城市之间的高速公路,而JSONXML则是这些高速公路上的车辆,它们帮助数据从一个地方迅速移动到另一个地方。真正意义上说,XML 和 JSON 是现今互联网中最常用的两种数据交换格式。虽然这两种格式的设计目标并不相同,但它们常常用于同一个任务,也就是数据交换中。这两种格式并没有哪一个比另一个更强,只是各自适用的领域不用。

以 JSON 方式进行API 的使用,优势在于比较方便 Javascript 或者和其他应用的集成。另一个优势在于其对对象和数组的表述和宿主语言中的数据结构相对应,例如对象、记录、结构体、字典、哈希表、键值列表还有数组、向量、列表,以及对象组成的数组等等。

以 xml 方式进行 API 的使用,优势在于可以使用强大的 xpath 特性进行相关的访问控制。另一个优势在于大多数的浏览器可以把它以具有高可读性和强组织性的方式展现给用户。XML 的树形结构让它易于结构化,浏览器也让用户可以自行展开或折叠树中的元素,这简直就是调试的福音。

现根据二者的基本信息进行分析比对,以及在应用API接口的流程进行罗列。

从JSON API与XML API的基础结构上进行分析比对

(1)JSON起初是为JavaScript设计的,现在它已经成为了许多编程语言的标准格式。在结构特点上,有着键值对的结构:每个键后面都跟着一个值,形成一对。例如:

{
 "name": "张三",
 "age": 25
}

数据类型支持:支持字符串、数字、数组、布尔值等。例如:

{
 "isStudent": true,
 "subjects": ["Math", "Science"]
}

读写的简易性:由于其结构简单,开发者可以轻松地读写JSON数据。

实际应用上,当你在网上购物时,你的购物车信息可能就是以JSON格式保存和传输的,例如:

{
 "cart": [
  {"item": "T-shirt", "price": 20},
  {"item": "Jeans", "price": 50}
]
}

(2)XML是一种标记语言,用于描述数据的结构。

在结构特点上,有着标签与属性的结构:数据被包裹在开放和关闭的标签中,可以有属性。例如:

<person age="25">
 <name>张三</name>
</person>

数据描述与展示:XML不仅仅是存储数据,还可以描述数据的结构和意义。

实际应用上,考虑一个图书馆的书籍目录,它可能使用XML来表示:

<library>

 <book id=”101″>

   <title>Programming 101</title>

   <author>John Doe</author>

 </book>

 <book id=”102″>

   <title>Web Design Basics</title>

   <author>Jane Smith</author>

 </book>

</library>

从上述对比中可以看出,JSON API有着更快、更灵活的特点,而XML API储量更大,速度会因此被拖慢。

JSON API和XML API被广泛应用在各大企业中。

脸书API(Facebook Graph API)为例,其主流的是JSON API。开发者需要使用Graph API Explorer工具,进行HTTP请求:GET for read, POST for modify & add, DELETE to remove nodes。

HTTP请求的路径是: graph.facebook.com。紧接着,开发者可以根据name来获取用户信息,如: /yourfacebookname。或者通过一个特别的路径来访问用户信息:/me 微软Live Connect使用的相同方式来获取用户信息。使用 /me 来获取用户信息需要认证。

接着,开发者可以再Login, Authorization and Permissions 登录,并进行授权和权限。

内部的JSON API连接是通过构建不同的URL通过Graph API去获取用户的具体信息。再获取用户信息前提是用户必须授权给应用,否则返回空的数据集合。

以亚马逊产品广告(APIAmazon Product Advertising API)为例,其主流的是XML API。

开发者使用前可登陆亚马逊广告接口官方说明:https://advertising.amazon.com/API/docs/en-us/setting-up/account-setup,进行查看。登陆注册地址:https://developer.amazon.com后,填写相关注册讯息。

成功后进入控制台,进入 Login with Amazon 菜单并创建配置文件,需要注意的是在与亚马逊邮件往来阶段开发者要提供一个公司介绍,所有正常的往来邮件最后会得到API所需的 client id,client secret。成功后,登陆网址https:/ladvertising.amazon.comAPl/docs/en-us/setting-up/generate-api-tokens,把实际参数替换进去,最后跳转到登录界面(网页有登录记录的可能会跳过),获取店铺授权token(Create APl authorization and refresh tokens)。

授权成功后,会跳转到回调地址(YOUR_RETURN_URL),并将authorization code 以GET 的形式传回来:array(2) { [“code”]=> string(20) “ANesDVfOewJXAuKXZVut” [“scope”]=> string(35)cpc advertising:campaign management”},最后处理逻辑,并获取token和profile id,到这为止基本上准备工作就做完了。最后只需要获取REPORTS,进行请求生成报告-等待报告完成-获取报告信息-下载报告内容-解压等流程,直接跳转到下载页面。

接口调试前需要先进行店铺授权,并获取bearer token,可参考文档;https://advertising.amazon.com/API/docs/en-us/setting-up/generate-api-tokens

店铺授权过后还需要获取每个店铺的profiles,参考https://advertising.amazon.com/API/docs/en-us/reference/2/profiles#/Profiles后续的每次接口调用都需要在请求带上bearer token、clientId和profileId三者。

JSON API和XML API实际应用中的特点。

JSON API 具备复合文档、稀疏字段集、可选性、优化功能和缓存等诸多优势。使用得当,可以为公司带来巨大的收益。以健身可穿戴公司 FitBit 为例,从该企业发展API 程序的情况上看,该公司在每年 40 亿次请求中,有 1/4 是通过第三方应用程序完成的,收入可观。

其采用的JSON API可以帮助创建一致的数据模型,比如建造“视图模型”,将现有端点变得超载,数据相关性松散时,可以利用 JSON API 来规范化数据,建立客户端-服务器通信期望。

此外,JSON API 还可以保持同步,比如公司设备需要经常与服务器同步,并且需要这些数据可以被第三方应用程序修改。这些更改必须非常快速地反映在所有 API 客户端中。JSON API 利用的 HTTP 缓存使他们能够防止召回过时的数据,从而减少冗余并提高最终用户的感知速度。

而XML文件在现实生活中应用十分广泛。其中,实际开发的主要特点是简单易操作,开发者的重点是读取XML,而非定义XML的结构,只要能快速获取有效信息即可。

在Java程序中获取XML文件的内容主要有2种解析的基础方式:DOM(平台无关的官方解析方式)、SAX(基于事件驱动的解析方式)。它们各有各的好处。DOM解析方式适合文档较小的情况,开发者可以下载dom4j网址:https://dom4j.github.io/。下载完成,将dom4j的jar文件导入工程即可;SAX解析方式 的应用范围更大,它并不需要读入整个文档,而文档的读入过程也就是SAX的解析过程。

参考网址:

https://mp.weixin.qq.com/s/IPyN4HzM9W5PquXDz1R_Lw

https://mp.weixin.qq.com/s/S4UmN0A5evvVb2J3UfbZpA

https://blog.csdn.net/qq_38806813/article/details/121065362

https://blog.csdn.net/ts3211/article/details/107998552

https://blog.csdn.net/weixin_34351321/article/details/90656773

https://mp.weixin.qq.com/s/iIMBfPk1ga00hYgytxMUVQ

#你可能也喜欢这些API文章!