近日,為了幫助程序員節(jié)省代碼開(kāi)發(fā)量,翼輝信息董事長(zhǎng)、SylixOS 嵌入式操作系統(tǒng)、EdgerOS 新一代智能邊緣計(jì)算操作系統(tǒng)創(chuàng)始人韓輝發(fā)布并開(kāi)源了極其有用的代碼生成器-JStruct。該工具使用 JavaScript 編寫(xiě),可以運(yùn)行在 JSRE 或者 Node.js 環(huán)境中,其生成的代碼相當(dāng)于在 C/C++ 環(huán)境中直接使用 JSON.parse 與 JSON.stringify。JStruct 降低了 C 語(yǔ)言嵌入式編程的門(mén)檻,而它的開(kāi)源是翼輝在簡(jiǎn)化設(shè)備端開(kāi)發(fā)道路上邁出的第一步。
JSON 作為現(xiàn)在最主流的數(shù)據(jù)交換語(yǔ)言之一,其簡(jiǎn)潔、清晰的層次結(jié)構(gòu)相較于其他數(shù)據(jù)描述語(yǔ)言更加易讀、易編寫(xiě)。隨著互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,JSON 在各行業(yè)應(yīng)用中脫穎而出。由于語(yǔ)言?xún)?yōu)勢(shì), JavaScript 可以非常輕松地將 JSON 數(shù)據(jù)轉(zhuǎn)換為應(yīng)用對(duì)象,反之也可以很容易的將應(yīng)用對(duì)象轉(zhuǎn)換為 JSON 數(shù)據(jù)。但這種順暢的體驗(yàn)也只能在 JavaScript 中體會(huì)到,尤其像 C 語(yǔ)言這樣的強(qiáng)類(lèi)型語(yǔ)言,想要使用 JSON 來(lái)完成數(shù)據(jù)傳輸,相較于 JavaScript 而言則要復(fù)雜的多。
在 C 語(yǔ)言編程中通常會(huì)引入 cJSON 來(lái)完成對(duì) JSON 數(shù)據(jù)的生成、操作、解析等操作。雖然 cJSON 的 API 簡(jiǎn)單易用,但相對(duì)于 JavaScript 簡(jiǎn)潔的聲明式語(yǔ)法,其可讀性還存在明顯差距。試想在具體的業(yè)務(wù)場(chǎng)景中可能會(huì)設(shè)計(jì)很多的 JSON 結(jié)構(gòu),而構(gòu)建這些 JSON 數(shù)據(jù)結(jié)構(gòu)的 C 語(yǔ)言代碼大同小異。一旦數(shù)據(jù)結(jié)構(gòu)多到了一個(gè)量級(jí),那么這樣的編程就成了重復(fù)的體力勞動(dòng)且極容易出錯(cuò)。那么有沒(méi)有更好的方案來(lái)讓我們能使用聲明式的方式,直接生成 C 語(yǔ)言代碼,把自己從這樣枯燥無(wú)趣的體力勞動(dòng)中解放出來(lái)? 答案就是 “JStruct”。
JStruct 是一個(gè)可以運(yùn)行在 Node.js 和 JSRE 平臺(tái)上的 C 語(yǔ)言 JSON 結(jié)構(gòu)代碼生成工具,只需要通過(guò)一個(gè)簡(jiǎn)單的配置文件,便可以生成一套完整的定制化 JSON 數(shù)據(jù)結(jié)構(gòu)處理的 C 代碼。
通過(guò)引入 JStruct 所生成的 test_jstruct.h,C 代碼中可以直接使用結(jié)構(gòu)體編程,像 JavaScript 一樣進(jìn)行對(duì)象成員的賦值與轉(zhuǎn)換。因?yàn)?JSON 字段與結(jié)構(gòu)體成員一一對(duì)應(yīng),代碼結(jié)構(gòu)將更加清晰、友好。這樣的開(kāi)發(fā)模式與數(shù)據(jù)調(diào)用方式也更容易讓上層應(yīng)用開(kāi)發(fā)人員理解和使用,降低了開(kāi)發(fā)所需的代碼量。如果開(kāi)發(fā)過(guò)程中 JSON 結(jié)構(gòu)需要改動(dòng),也僅僅只需要修改配置文件重新生成替換即可。
由于使用了 JSON 聲明的配置形式,使得無(wú)論是應(yīng)用端還是設(shè)備端開(kāi)發(fā)者都可以根據(jù) conf.json 的內(nèi)容清晰了解到數(shù)據(jù)結(jié)構(gòu)和類(lèi)型,這樣極大地降低了設(shè)備端與應(yīng)用端的交流成本。
萬(wàn)物互聯(lián)的目的實(shí)質(zhì)就是打通數(shù)據(jù)連接,如何更加方便快速地完成數(shù)據(jù)的構(gòu)建,解析,處理則是達(dá)成萬(wàn)物互聯(lián)目標(biāo)的基礎(chǔ)。 如果已經(jīng)厭倦了 cJSON 的數(shù)據(jù)生成與解析的方式,不妨試試 JStruct ,相信一定會(huì)給你帶來(lái)不同的 JSON 數(shù)據(jù)操作體驗(yàn)。
熱愛(ài)寫(xiě)代碼、程序員出身的韓輝在 2006 年開(kāi)始研發(fā) SylixOS 系統(tǒng),與團(tuán)隊(duì)一起寫(xiě)下百萬(wàn)行內(nèi)核源代碼,成為了現(xiàn)在翼輝信息的種子,SylixOS 相關(guān)內(nèi)核代碼開(kāi)源并在工信部進(jìn)行了源碼自主率掃描,內(nèi)核自主化率達(dá)到 100%。2021 年,韓輝帶領(lǐng)翼輝愛(ài)智團(tuán)隊(duì)推出新一代智能邊緣計(jì)算操作系統(tǒng)——愛(ài)智操作系統(tǒng)EdgerOS,基于 SylixOS 系統(tǒng)為內(nèi)核進(jìn)行開(kāi)發(fā),可為開(kāi)發(fā)者提供低代碼開(kāi)發(fā)平臺(tái),快速抓住物聯(lián)網(wǎng)時(shí)代創(chuàng)業(yè)契機(jī)。此次翼輝通過(guò)發(fā)布和開(kāi)源代碼生成器,可為程序員極大節(jié)約代碼開(kāi)發(fā)量,讓開(kāi)發(fā)工作更加便捷。翼輝愛(ài)智團(tuán)隊(duì)也一貫堅(jiān)持以程序員和開(kāi)發(fā)者的利益至上,未來(lái)將有更多優(yōu)秀的小工具分批開(kāi)放提供使用。
關(guān)鍵詞: