16、nodeMCU學習筆記--cjson模塊

cjson??esp8266??nodeMCU

閑言碎語

新年第一更。本來這一篇文章應該是繼續(xù)講u8glib模塊的??上?,oled模塊掛了,沒法驗證代碼,自然文章沒法寫下去。那就先暫時欠著這么一篇文章好了,等有oled屏再繼續(xù)水。

這篇文章打算說一個極其簡單的模塊——cjson模塊。這個模塊可以幫助我們將table數(shù)據(jù)類型轉(zhuǎn)換成cjson格式。亦或?qū)json格式轉(zhuǎn)換成table數(shù)據(jù)類型。

模塊函數(shù)

cjson模塊的函數(shù)只有2個,真的相當?shù)暮唵巍?那你還水什么文章,又來騙字數(shù)!

序號 函數(shù)名 參數(shù) 返回值
1 cjson.encode() table string(json)
2 cjson.decode() string(json) table

實踐一下

先看編碼,.encode()函數(shù)可以將table轉(zhuǎn)換成json,也可以將數(shù)字或者字符串轉(zhuǎn)成json。還有一點要注意,嵌套的table在轉(zhuǎn)換的時候需要花費較多的內(nèi)存。文檔中建議使用pcall來調(diào)用這個函數(shù)。

ledtable = {}
ledtable.ledR="100"
ledtable.ledB="50"
ledtable.ledG="150"

ok, json = pcall(cjson.encode, ledtable)
if ok then
  print(json)
else
  print("failed to encode!")
end

encode

這里創(chuàng)建一個ledtable的table變量,并對其賦值。然后使用.encode()將這個table轉(zhuǎn)換成json。如果轉(zhuǎn)換成功,則將其打印出來。

接著再來看看解碼,.decode()的效果和.encode()相反。具體這么用,直接看個代碼。在上面的代碼中加入下面的代碼即可。

t = cjson.decode(json)

for k, v in pairs(t) do 
    print(k, v)
end
decode

cjson模塊雖然用起來很簡單。不過,還是有相當大的用武之地的?,F(xiàn)在物聯(lián)網(wǎng)通信中,使用json做數(shù)據(jù)交互也是見怪不怪了。比如說nodemcu做控制led燈、繼電器等設備,當服務器想改變led的狀態(tài)或者顏色、開關繼電器都可以用過json來通信。計劃在寫完這個系列后,寫一個相對綜合一點的實踐系列,每個例子不少于5個功能模塊。至于寫些什么,暫時沒想好。也許可以Google一下,歪果仁怎么玩

一點lua語法

pcall是lua提供的一個用于錯誤處理的函數(shù),第一個參數(shù)表示要調(diào)用的函數(shù)。具體用法還需要讀者自己百度[捂臉]。

更多內(nèi)容

↑ 點擊上面的標題可用查看同文集的其它文章。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容