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