當前較為流行的資料交換格式
在日常生活中,人與人之間的交流需要彼此都聽得懂得語言。同理,在計算機的不同程式之間,或者不同的程式語言之間進行交換資料,也需要一種大家都能聽得懂得‘語言’,這就是資料交換格式,它通過文字以特定的形式來進行描述資料。
對於一段資料“JSON-JavaScript Object Notation、XML-eXtensible Markup Language、YAML-Yet Another Markup Language”,我們通常有以下三種描述方法:
一、JSON(JavaScript Object Notation)
JSON是一種輕量級的文字資料交換格式,在語法上與建立JavaScript物件的程式碼相同,由key|value(鍵|值)構成。{ "dates": { "date": [ { "id": "1", "name": "JSON", "abb": "JavaScript Object Notation" }, { "id": "2", "name": "XML", "abb": "eXtensible Markup Language" }, { "id": "3", "name": "YAML", "abb": "Yet Another Markup Language" } ] } }
JSON的格式:
a:資料在名稱|值對中
b.資料由逗號分隔
c.大括號儲存物件
d.中括號儲存陣列
JSON的優點:
a.具有自我描述性,易於閱讀編寫,也易於機器解析與生成
b.使用 Javascript語法來描述資料物件,但是 JSON 仍然獨立於語言和平臺。JSON 解析器和 JSON 庫支援許多不同的程式語言。 目前非常多的動態(PHP,JSP,.NET)程式語言都支援JSON
c.非常適用於伺服器與JavaScript互動
使用JSON:
a.讀取JSON字串
b.用eval()或者parse()處理字串
二、XML(eXtensible Markup Language)
<?xml version="1.0" encoding="UTF-8" ?> <dates> <date> <id>1</id> <name>JSON</name> <abb>JavaScript Object Notation</abb> </date> <date> <id>2</id> <name>XML</name> <abb>eXtensible Markup Language</abb> </date> <date> <id>3</id> <name>YAML</name> <abb>Yet Another Markup Language</abb> </date> </dates>
可擴充套件標記語言,標準通用標記語言的子集,是一種用於標記電子檔案使其具有結構性的標記語言。
XML的格式:
a.宣告:定義XML檔案版本以及字符集
b.根標籤:樹形結構的根節點
c.子元素:相對上一級而言,可以自定義,必須有結束標籤,對大小寫敏感
d.屬性:一個元素可以擁有多個名字不同的屬性
使用XML:
a.讀取XML文件
b.使用XML DOM迴圈遍歷文件
c.讀取值並存儲與變數
三、YAML(Yet Another Markup Language)
dates:
date:
-
id: 1
name: JSON
abb: "JavaScript Object Notation"
-
id: 2
name: XML
abb: "eXtensible Markup Language"
-
id: 3
name: YAML
abb: "Yet Another Markup Language"
YAML是一種直觀的能夠被電腦識別的的資料序列化格式
YAML的格式:
a.結構用縮排表示
b.連續專案用‘-’表示
c.key|value用‘:’分隔
YAML的適用範圍:
a.由於實現簡單,解析成本低,特別適合在指令碼語言中使用
b.YAML比較適合做序列化。因為它是宿主語言資料型別直轉的。
c.YAML做配置檔案也不錯。比如Ruby on Rails的配置就選用的YAML。
YAML的問題:
由於相容性問題,不同語言間的資料流轉,建議不要用YAML
還有一種表達方式是CSV(逗號分隔符),使用表格和分隔符來表示資料的格式,本文就不在多加敘述,有興趣的讀者可以自己去了解一下。本文列出的三者相較而言,JSON與XML使用的更加廣泛一點。並且JSON和XML從實現方法比較而言,不難看出,JSON比XML更快更易使用,個人更加推崇JSON一點。當然,具體情況還得具體分析,合理的使用這些資料交換格式,我們才能夠寫出更加優秀、強大的程式碼!