①json(JavaScript Object Notation) 是一種輕量級的數據交換格式。它基於ECMAScript的一個子集。 JSON採用完全獨立於語言的文本格式,但是也使用了類似於C語言家族的習慣(包括C、C++、C#、Java、JavaScript、Perl、Python等)。這些特性使JSON成爲理想的數據交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成(一般用於提升網絡傳輸速率)。全稱是JavaScript Object Notation。它是基於JavaScript編程語言ECMA-262 3rd Edition-December 1999標準的一種輕量級的數據交換格式,主要用於跟服務器進行交換數據。跟XML相類似,它獨立語言,在跨平臺數據傳輸上有很大的優勢。
json的結構:JSON建構有兩種結構:1. “名稱/值”對的集合。不同的語言中,它被理解爲對象,記錄,結構,字典,哈希表,有鍵列表,或者關聯數組 。2.值的有序列表。在大部分語言中,它被理解爲數組。
json的具體形式:1.對象是一個無序的“‘名稱/值’對”集合。2.數組是值的有序集合。3、值可以是雙引號括起來的字符串、數值、true、false、 null、對象或者數組。這些結構可以嵌套。4、字符串是由雙引號包圍的任意數量Unicode字符的集合,使用反斜線轉義。一個字符即一個單獨的字符串。 字符串與C或者Java的字符串非常相似。5、數值也與C或者Java的數值非常相似。除去未曾使用的八進制與十六進制格式。除去一些編碼細節。
JSON和XML的比較
◆可讀性
JSON和XML的可讀性可謂不相上下,一邊是簡易的語法,一邊是規範的標籤形式,很難分出勝負。
◆可擴展性
XML天生有很好的擴展性,JSON當然也有,沒有什麼是XML不能擴展,而JSON卻不能擴展的。不過JSON在Javascript主場作戰,可以存儲Javascript複合對象,有着xml不可比擬的優勢。
◆編碼難度
XML有豐富的編碼工具,比如Dom4j、JDom等,JSON也有提供的工具。無工具的情況下,相信熟練的開發人員一樣能很快的寫出想要的xml文檔和JSON字符串,不過,xml文檔要多很多結構上的字符。
◆解碼難度
XML的解析方式有兩種:
一是通過文檔模型解析,也就是通過父標籤索引出一組標記。例如:xmlData.getElementsByTagName("tagName"),但是這樣是要在預先知道文檔結構的情況下使用,無法進行通用的封裝。
另外一種方法是遍歷節點(document 以及 childNodes)。這個可以通過遞歸來實現,不過解析出來的數據仍舊是形式各異,往往也不能滿足預先的要求。
凡是這樣可擴展的結構數據解析起來一定都很困難。
JSON也同樣如此。如果預先知道JSON結構的情況下,使用JSON進行數據傳遞簡直是太美妙了,可以寫出很實用美觀可讀性強的代碼。如果你是純粹的前臺開發人員,一定會非常喜歡JSON。但是如果你是一個應用開發人員,就不是那麼喜歡了,畢竟xml纔是真正的結構化標記語言,用於進行數據傳遞。
而如果不知道JSON的結構而去解析JSON的話,那簡直是噩夢。費時費力不說,代碼也會變得冗餘拖沓,得到的結果也不盡人意。但是這樣也不影響衆多前臺開發人員選擇JSON。因爲json.js中的toJSONString()就可以看到JSON的字符串結構。當然不是使用這個字符串,這樣仍舊是噩夢。常用JSON的人看到這個字符串之後,就對JSON的結構很明瞭了,就更容易的操作JSON。
以上是在Javascript中僅對於數據傳遞的xml與JSON的解析。在Javascript地盤內,JSON畢竟是主場作戰,其優勢當然要遠遠優越於xml。如果JSON中存儲Javascript複合對象,而且不知道其結構的話,我相信很多程序員也一樣是哭着解析JSON的。
②xml可擴展標記語言,標準通用標記語言的子集,是一種用於標記電子文件使其具有結構性的標記語言。其先驅是SGML和HTML。SGML,通用標識語言標準,是國際上定義電子文件結構和內容描述的標準,是一種非常複雜的文檔結構,主要用於大量高度結構化數據的防衛區和其它各種工業領域,便於分類和索引。同XML相比,SGML定義的功能很強大,然而它不適於Web數據描述,而且價格非常昂貴。XML與Access,Oracle和SQLServer等數據庫不同,數據庫提供了更強有力的數據存儲和分析能力,例如:數據索引、排序、查找、相關一致性等,XML僅僅是展示數據。事實上XML與其他數據表現形式最大的不同是:他極其簡單。這是一個看上去有點瑣細的優點,但正是這點使XML與衆不同。
xml的作用:
1、豐富文件(Rich Documents)-自定文件描述並使其更豐富; 2、屬於文件爲主的XML技術應用;
3、標記是用來定義一塊數據應該如何呈現;
4、解釋數據(Metadata)-描述其它文件或在線信息;
5、屬於數據爲主的XML技術應用;
6、標記是用來說明一塊資料的意義;
7、組態檔案(Configuration Files)-描述軟件的組態參數。
XML和HTML的不同可以歸納爲3點:
一、XML擴展性比HTML強
XML(Extensible Markup Languages)是擴展標記語言的英語縮寫,他可以創建個性化的標記語言,可以稱之爲元語言。XML的標記語言可以自定義,這樣可以提供更多的數據操作,而不像HTML一樣,只能侷限於按一定的格式在終端顯示出來。HTML的功能只有瀏覽器放入顯示和打印,僅僅適合靜態網頁的要求。
二、XML的語法比HTML嚴格
由於XML的擴展性強,它需要穩定的基礎規則來支持擴展。它的嚴格規則爲:
①起始和結束的標籤相匹配
②嵌套標籤不能相互嵌套
③區分大小寫
相對應XML的嚴格規則,HTML語言並沒有規定標籤的絕對位置,也不區分大小寫,而這些全部由瀏覽器來完成識別和更正。
三、XML與HTML互補
XML可以獲得應用之間的相應信息,提供終端的多項處理要求,也能被其他的解析器和工具所使用,在現階段,XML可以轉化成相應的HTML,來適應當前瀏覽器的需求。
XML的優勢:
能使用預先定義標記。
定義數據的層次。
篩選我們只想得到的那部分數據。
真正做到國際化。
真正實現數據交互
可重用。
CSV文件格式的通用標準並不存在,但是在RFC 4180中有基礎性的描述。使用的字符編碼同樣沒有被指定,但是7-bitASCII是最基本的通用編碼。
csv的使用規則:
1 開頭是不留空,以行爲單位。
2 可含或不含列名,含列名則居文件第一行。
3 一行數據不跨行,無空行。
4 以半角逗號(即,)作分隔符,列爲空也要表達其存在。
5 列內容如存在半角逗號(即,)則用半角雙引號(即"")將該字段值包含起來。
6 列內容如存在半角引號(即")則應替換成半角雙引號("")轉義,並用半角引號(即"")將該字段值包含起來。
7 文件讀寫時引號,逗號操作規則互逆。
8 內碼格式不限,可爲 ASCII、Unicode 或者其他。
9 不支持特殊字符