Go 瑞士軍刀:各種結(jié)構(gòu)的轉(zhuǎn)換工具
閱讀本文大概需要 3 分鐘。
大家好,我是 polarisxu。
上次推薦的 「Go網(wǎng)址導(dǎo)航」,其中收錄了一項(xiàng):轉(zhuǎn)換器。

網(wǎng)址是:https://transform.tools/。
這是一個(gè)開(kāi)源項(xiàng)目,項(xiàng)目地址:https://github.com/ritz078/transform,目前 Star 數(shù) 2.8k+。
這個(gè)網(wǎng)站將轉(zhuǎn)換工具分成了幾類(lèi):
SVG HTML JSON JSON Schema CSS JavaScript GraphQL JSON-LD TypeScript Flow Others
其中有一些對(duì) Gopher 比較有用,這里簡(jiǎn)單列舉介紹下。
01 Go 相關(guān)
JSON 幾乎每個(gè)程序員都會(huì)用到。在 Go 語(yǔ)言中,會(huì)有哪些場(chǎng)景會(huì)用到這里 JSON 相關(guān)工具呢?
1)轉(zhuǎn)為 struct
這是一個(gè)很常見(jiàn)的場(chǎng)景,目前也存在很多在線工具,支持 JSON 轉(zhuǎn)為 struct,而且我沒(méi)記錯(cuò)的話,GoLand 自帶將 JSON 轉(zhuǎn)為 struct。
transform 里也有這樣的工具:https://transform.tools/json-to-go

在左邊改動(dòng) JSON,右邊會(huì)實(shí)時(shí)顯示出對(duì)應(yīng)的 struct。
此外,頂部的向上箭頭,是導(dǎo)入文件,支持從本地導(dǎo)入和遠(yuǎn)程 URL 導(dǎo)入。
2)轉(zhuǎn)為 BSON
如果你存儲(chǔ)使用的是 MongoDB,會(huì)使用到 BSON。不過(guò) JSON 到 BSON 轉(zhuǎn)換幾乎不太需要借助工具。
BSON 是一種類(lèi) JSON 的一種二進(jìn)制形式的存儲(chǔ)格式,簡(jiǎn)稱(chēng) Binary JSON,它和 JSON 一樣,支持內(nèi)嵌的文檔對(duì)象和數(shù)組對(duì)象,但是 BSON 有 JSON 沒(méi)有的一些數(shù)據(jù)類(lèi)型,如 Date 和 BinData 類(lèi)型。BSON 可以做為網(wǎng)絡(luò)數(shù)據(jù)交換的一種存儲(chǔ)形式,這個(gè)有點(diǎn)類(lèi)似于 Google 的 Protocol Buffer,但是 BSON 是一種 schema-less 的存儲(chǔ)形式,它的優(yōu)點(diǎn)是靈活性高,但它的缺點(diǎn)是空間利用率不是很理想,BSON有 三個(gè)特點(diǎn):輕量性、可遍歷性、高效性。
所以,BSON 看起來(lái)和 JSON 是一樣的。

02 其他配置文件相關(guān)
目前常用的配置文件有:yaml、toml、json、xml 等,它們直接是可以直接轉(zhuǎn)換的。這個(gè)網(wǎng)站就提供了相關(guān)工具,將一種格式轉(zhuǎn)為另一種格式。
比如講 yaml 轉(zhuǎn)為 toml(我喜歡的文件類(lèi)型):

03 總結(jié)
好的工具可以提升開(kāi)發(fā)速度,我們要善于使用工具。當(dāng)然,有能力,你也可以自己生產(chǎn)工具。有好工具記得分享,讓更多人知曉、使用。
我是 polarisxu,北大碩士畢業(yè),曾在 360 等知名互聯(lián)網(wǎng)公司工作,10多年技術(shù)研發(fā)與架構(gòu)經(jīng)驗(yàn)!2012 年接觸 Go 語(yǔ)言并創(chuàng)建了 Go 語(yǔ)言中文網(wǎng)!著有《Go語(yǔ)言編程之旅》、開(kāi)源圖書(shū)《Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)》等。
堅(jiān)持輸出技術(shù)(包括 Go、Rust 等技術(shù))、職場(chǎng)心得和創(chuàng)業(yè)感悟!歡迎關(guān)注「polarisxu」一起成長(zhǎng)!也歡迎加我微信好友交流:gopherstudio
