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

這里創(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

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)容
↑ 點擊上面的標題可用查看同文集的其它文章。