16、nodeMCU学习笔记--cjson模块

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

16、nodeMCU学习笔记--cjson模块_第1张图片
encode

这里创建一个ledtable的table变量,并对其赋值。然后使用 .encode()将这个table转换成json。如果转换成功,则将其打印出来。

接着再来看看解码,.decode()的效果和.encode()相反。具体这么用,直接看个代码。在上面的代码中加入下面的代码即可。

t = cjson.decode(json)

for k, v in pairs(t) do 
    print(k, v)
end
16、nodeMCU学习笔记--cjson模块_第2张图片
decode

cjson模块虽然用起来很简单。不过,还是有相当大的用武之地的。现在物联网通信中,使用json做数据交互也是见怪不怪了。比如说nodemcu做控制led灯、继电器等设备,当服务器想改变led的状态或者颜色、开关继电器都可以用过json来通信。计划在写完这个系列后,写一个相对综合一点的实践系列,每个例子不少于5个功能模块。至于写些什么,暂时没想好。也许可以Google一下,歪果仁怎么玩

一点lua语法

pcall是lua提供的一个用于错误处理的函数,第一个参数表示要调用的函数。具体用法还需要读者自己百度[捂脸]。

更多内容

↑ 点击上面的标题可用查看同文集的其它文章。

你可能感兴趣的:(16、nodeMCU学习笔记--cjson模块)