cjson esp8266 nodeMCU
闲言碎语
新年第一更。本来这一篇文章应该是继续讲u8glib模块的。可惜,oled模块挂了,没法验证代码,自然文章没法写下去。那就先暂时欠着这么一篇文章好了,等有oled屏再继续水。
这篇文章打算说一个极其简单的模块——cjson模块。这个模块可以帮助我们将table数据类型转换成cjson格式。亦或将cjson格式转换成table数据类型。
模块函数
cjson模块的函数只有2个,真的相当的简单。 那你还水什么文章,又来骗字数!
序号 | 函数名 | 参数 | 返回值 |
---|---|---|---|
1 | cjson.encode() | table | string(json) |
2 | cjson.decode() | string(json) | table |
实践一下
先看编码,.encode()函数可以将table转换成json,也可以将数字或者字符串转成json。还有一点要注意,嵌套的table在转换的时候需要花费较多的内存。文档中建议使用pcall来调用这个函数。
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
这里创建一个ledtable的table变量,并对其赋值。然后使用.encode()将这个table转换成json。如果转换成功,则将其打印出来。
接着再来看看解码,.decode()的效果和.encode()相反。具体这么用,直接看个代码。在上面的代码中加入下面的代码即可。
t = cjson.decode(json)
for k, v in pairs(t) do
print(k, v)
end
cjson模块虽然用起来很简单。不过,还是有相当大的用武之地的。现在物联网通信中,使用json做数据交互也是见怪不怪了。比如说nodemcu做控制led灯、继电器等设备,当服务器想改变led的状态或者颜色、开关继电器都可以用过json来通信。计划在写完这个系列后,写一个相对综合一点的实践系列,每个例子不少于5个功能模块。至于写些什么,暂时没想好。也许可以Google一下,歪果仁怎么玩
一点lua语法
pcall是lua提供的一个用于错误处理的函数,第一个参数表示要调用的函数。具体用法还需要读者自己百度[捂脸]。
更多内容
↑ 点击上面的标题可用查看同文集的其它文章。