3 回答

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊
從技術(shù)上講,YAML是JSON的超集。這意味著,至少在理論上,YAML解析器可以理解JSON,但不一定相反。
請(qǐng)參閱標(biāo)題為“YAML:與JSON的關(guān)系”的部分中的官方規(guī)范。
一般來(lái)說(shuō),我喜歡YAML中某些JSON中沒(méi)有的東西。
正如@jdupont指出的那樣,YAML在視覺(jué)上更容易看。事實(shí)上,YAML主頁(yè)本身就是有效的YAML,但人們很容易閱讀。
YAML能夠使用“錨點(diǎn)”引用YAML文件中的其他項(xiàng)目。因此,它可以處理MySQL數(shù)據(jù)庫(kù)中可能找到的關(guān)系信息。
YAML 在 YAML文件中嵌入其他序列化格式(如JSON或XML)更為強(qiáng)大。
實(shí)際上,最后兩點(diǎn)都不會(huì)對(duì)你或我所做的事情產(chǎn)生影響,但從長(zhǎng)遠(yuǎn)來(lái)看,我認(rèn)為YAML將是一種更強(qiáng)大和可行的數(shù)據(jù)序列化格式。
目前,AJAX和其他Web技術(shù)傾向于使用JSON。YAML目前更多地用于離線數(shù)據(jù)處理。例如,它默認(rèn)包含在基于C的OpenCV計(jì)算機(jī)視覺(jué)包中,而JSON則不包括在內(nèi)。
您將找到JSON和YAML的C庫(kù)。YAML的圖書館往往更新,但我過(guò)去沒(méi)有遇到任何問(wèn)題。參見(jiàn)例如Yaml-cpp。

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊
繞過(guò)深?yuàn)W的理論
這回答了標(biāo)題,而不是詳細(xì)信息,因?yàn)榇蠖鄶?shù)人只是像谷歌一樣從google搜索結(jié)果中讀取標(biāo)題,所以我覺(jué)得有必要從Web開(kāi)發(fā)人員的角度進(jìn)行解釋。
YAML使用空格縮進(jìn),這是Python開(kāi)發(fā)人員熟悉的領(lǐng)域。
JavaScript開(kāi)發(fā)人員喜歡JSON,因?yàn)樗荍avaScript的一個(gè)子集,可以直接在JavaScript中解釋和編寫,同時(shí)使用簡(jiǎn)寫方式聲明JSON,在使用沒(méi)有空格的典型變量名時(shí),不需要鍵中的雙引號(hào)。
有很多解析器在YAML和JSON的所有語(yǔ)言中都能很好地工作。
在許多情況下,YAML的空白格式可以更容易查看,因?yàn)楦袷交枰诵曰姆椒ā?/p>
如果您的編輯器中沒(méi)有空格可見(jiàn)或縮進(jìn)線指示符,那么YAML的空白雖然更緊湊,更容易查看,但可能難以手動(dòng)編輯。
JSON的序列化和反序列化要快得多,因?yàn)橐獧z查的功能明顯少于YAML,這使得更小更輕的代碼能夠處理JSON。
一個(gè)常見(jiàn)的誤解是YAML需要較少的標(biāo)點(diǎn)符號(hào)并且比JSON更緊湊,但這完全是錯(cuò)誤的??崭袷遣豢梢?jiàn)的,所以看起來(lái)字符較少,但是如果你計(jì)算實(shí)際的空格是必要的,以便正確解釋YAML以及正確的縮進(jìn),你會(huì)發(fā)現(xiàn)YAML實(shí)際上需要比JSON更多的字符。JSON不使用空格來(lái)表示層次結(jié)構(gòu)或分組,并且可以通過(guò)刪除不必要的空格來(lái)輕松展平,以實(shí)現(xiàn)更緊湊的傳輸。
房間里的大象:互聯(lián)網(wǎng)本身
JavaScript如此明顯地占據(jù)了網(wǎng)絡(luò)的巨大優(yōu)勢(shì),而JavaScript開(kāi)發(fā)人員更喜歡將JSON作為數(shù)據(jù)格式與流行的Web API一起使用,因此在進(jìn)行一般意義上的Web編程時(shí),很難使用YAML而不是JSON,因?yàn)槟赡軙?huì)被淘汰在團(tuán)隊(duì)環(huán)境中。實(shí)際上,大多數(shù)Web程序員甚至都不知道YAML存在,更不用說(shuō)考慮使用它了。
如果您正在進(jìn)行任何Web編程,JSON是默認(rèn)的方法,因?yàn)樵谑褂肑avaScript時(shí)不需要轉(zhuǎn)換步驟,因此在這種情況下您必須提出更好的參數(shù)來(lái)使用YAML而不是JSON。
添加回答
舉報(bào)