两种常用的数据交换格式:XML和JSON
不同编程语言之间的数据传输,需要一种通用的数据交换格式,它需要简洁、易于数据储存、快速读取,且独立于各种编程语言。我们往往传输的是文本文件,比如我们都知道的csv(comma seperated values)格式。
而在互联网上,传输数据往往有很多层次的结构,并非矩阵形态(m×n)那么简单。常见的有xml、json、yaml等等。其中,yaml是"yaml ain't markup language"的递归缩写,即各单词首字母组合恰为第一个词;而yaml也可理解成yet another markup language。
而感觉离我们最近的主要还是xml和json,并且是常常遇到;yaml暂时没有接触。故本文对此二者做个小的总结。
(一)XML
Extensible Markup Language,可扩展标记语言。
XML最初的设计目的是为了EDI(Electronic Data Interchange,电子数据交换)。
早在Web诞生以前,SGML(Standard Generalized Markup Language,标准通用标记语言)就被发明。然而它太复杂,且不适用于Web,因此1989年HTML(Hyper Text Markup Language,超文本标记语言)诞生了。而HTML也存在着无法描述数据、可读性差、搜索时间长等缺陷。1998年,以前两者为前驱,W3c(万维网联盟)发布了XML的1.0标准,标志着XML的诞生。
主要语法规则:
1、必须有声明语句。
2、大小写有区别。例如“<P>”和“<p>”是不同的标记。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="osg.AndroidExample"
android:installLocation="preferExternal"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:targetSdkVersion="8" android:minSdkVersion="8"></uses-sdk>
<uses-feature android:glEsVersion="0x00020000"/> <!-- OpenGL min requierements (2.0) -->
<uses-permission android:name="android.permission.INTERNET"/> <application android:label="@string/app_name" android:icon="@drawable/osg">
<activity android:name=".osgViewer"
android:label="@string/app_name" android:screenOrientation="landscape"> <!-- Force screen to landscape -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> </application>
</manifest>
(二)JSON
JavaScript Object Notation,JavaScript对象符号。
JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,于2001年开始推广。
主要语法规则:
1.使用六个基本符号(允许前后有空格出现):数组'['和']'、对象'{'和'}'、命名分隔符':'、值分隔符','。
2.值可以是对象、数组、数字、字符串或者三个字面值(false、null、true)中的一个。值中的字面值中的英文必须使用小写。
{
"people": [{
"firstName": "Brett",
"lastName": "McLaughlin"
},
{
"firstName": "Jason",
"lastName": "Hunter"
}
]
}
这里推荐在线的XML和JSON解析器,方便数据格式转化和查看。
解析XML : https://c.runoob.com/front-end/710
解析JSON: https://www.bejson.com/
参考资料:
1. https://baike.baidu.com/item/%E5%8F%AF%E6%89%A9%E5%B1%95%E6%A0%87%E8%AE%B0%E8%AF%AD%E8%A8%80/2885849?fromtitle=xml&fromid=86251&fr=aladdin (百度百科XML)
2. https://baike.baidu.com/item/JSON (百度百科JSON)
两种常用的数据交换格式:XML和JSON的更多相关文章
- 数据交换格式XML和JSON对比
1.简介: XML:extensible markup language,一种类似于HTML的语言,他没有预先定义的标签,使用DTD(document type definition)文档类型定义来组 ...
- Java 常见数据交换格式——xml、json、yaml
目录 数据交换格式介绍 XML 使用DOM方式解析 使用SAX方式解析 使用DOM4J方式解析 使用JDOM方式解析 JSON 使用JSONObject方式将数据转换为JSON格式 利用JSONObj ...
- JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式
JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 它基于JavaScript(Standard ECMA-262 3rd Edition - D ...
- JSON --- 一种轻量级的数据交换格式
目录 1. 语法 2. 解析与序列化 JSON.stringify( jsData[, filter, indent] ) JSON.parse( jsonData[, reduction]) JSO ...
- python开发_json_一种轻量级的数据交换格式
以下是我做的对于python中json模块的demo 运行效果: Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) [MSC v.16 ...
- 数据交换格式与SpringIOC底层实现
1.数据交换格式 1.1 有哪些数据交换格式 客户端与服务器常用数据交换格式xml.json.html 1.2 数据交换格式应用场景 1.2.1 移动端(安卓.iOS)通讯方式采用http协议+JSO ...
- 【学习】006数据交换格式与SpringIOC底层实现
课程目标 XML和JSON Java反射机制 手写SpringIOC 什么是数据交换格式 客户端与服务器常用数据交换格式xml.json.html 数据交换格式用场景 移动端(安卓.IOS)通讯方式采 ...
- 常用两种数据交换格式之XML和JSON的比较
目前,在web开发领域,主要的数据交换格式有XML和JSON,对于XML相信每一个web developer都不会感到陌生: 相比之下,JSON可能对于一些新步入开发领域的新手会感到有些陌生,也可能你 ...
- XML和JSON两种数据交换格式的比较
在web开发领域,主要的数据交换格式有XML和JSON,对于在 Ajax开发中,是选择XML还是JSON,一直存在着争议,个人还是比较倾向于JSON的.一般都输出Json不输出xml,原因就是因为 x ...
随机推荐
- JsonProperty 使用
引入 依赖 <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId> ...
- Hibernate——简单的增、删、改、查操作
思路: 1.导入hibernate jar包 2.导入mysql jar包 3.创建数据库 4.创建java实体类 5.编写hibernate.cfg.xml配置文件 6.编写dao类 目录: 数据表 ...
- 【VS开发】【图像处理】相机中白平衡的算法模拟实现
相机主要技术点为3A算法. 而3A算法主要指的是自动对焦(AF).自动曝光(AE)及自动白平衡(AWB).自动白平衡:根据光源条件调整图片颜色的保真程度. 网上时常有类似招聘如下的招聘信息: ---- ...
- selenium学习-ActionChains方法列表
ActionChains方法列表 click(on_element=None) ——单击鼠标左键 click_and_hold(on_element=None) ——点击鼠标左键,不松开 contex ...
- HTTP 请求消息头部实例:
HTTP 请求消息头部实例: Host:rss.sina.com.cn //客户端指定自己想访问的WEB服务器的域名/IP 地址和端口号User-Agent:Mozilla/5.0 (W ...
- etcd单节点数据备份与恢复
插入测试数据 # etcdctl put smith # etcdctl put allen # etcdctl put ward # etcdctl put jones # etcdctl put ...
- [转帖]关于Ubuntu与Debian的关系,了解!
关于Ubuntu与Debian的关系,了解! https://blog.csdn.net/guyue35/article/details/47286193 了解一下区别.. 饮水思源:Ubuntu ...
- [转帖]虚拟内存探究 -- 第四篇:malloc, heap & the program break
虚拟内存探究 -- 第四篇:malloc, heap & the program break http://blog.coderhuo.tech/2017/10/19/Virtual_Memo ...
- Springboot与springcloud
1.什么是Spring Boot? 它简化了搭建Spring项目,自动配置Spring,简化maven配置,自带tomcat无需部署war包,创建独立的spring引用程序main方法运行: 2.Sp ...
- [洛谷P4183][USACO18JAN]Cow at Large P
题目链接 Bzoj崩了之后在洛谷偶然找到的点分好题! 在暴力的角度来说,如果我们$O(n)$枚举根节点,有没有办法在$O(n)$的时间内找到答案呢? 此时如果用树形$dp$的想法,发现是可做的,因为可 ...