基于JSON数据接受处理的一种方法(基础文,大佬忽视,小白来看看有没有能吸收的营养)

今天正好看有童鞋写的接收处理代码满满整页的switch,case....给个建议,其实我们可以善于使用工具,(有能力就创作工具,磨刀不误砍柴工。)简洁高效还不容易出BUG。以远程设置设备参数为例:...

今天正好看有童鞋写的接收处理代码满满整页的switch,case....给个建议,其实我们可以善于使用工具,(有能力就创作工具,磨刀不误砍柴工。)简洁高效还不容易出BUG。

以远程设置设备参数为例:如果有成百上千的参数要设置显然使用switch这样的办法不适用(理论上也可以,但是代码太冗杂)

使用json就很方便:

--[[命令格式:json
远程升级:例:{"cmd":"update"}                   立马远程升级
设置命令:例:
{"cmd":"set","type":"packInterval","ext":300}   打包数据上传间隔:数值为有效时间,单位秒。
{"cmd":"set","type":"Reading","ext":120}        设置为阅读模式:数值为有效的时间,单位秒。
{"cmd":"set","type":"VsetMax","ext":6}          数值为速度报警上限
...等等]]
--- 数据接收处理供MQTTtask调用,禁止local!
function dataReceiveProc(receiveData)
    local tjsondata,result1,errinfo = json.decode(receiveData)
    if result1 then
        if tjsondata.cmd == "set" then
            PD[tjsondata.type] = tjsondata.ext
        elseif tjsondata.cmd == "update" then
            update.request()
        else
        end
    else
        log.info(filename.."dataReceiveProc",errinfo)
    end
    return true
end


直接就可以赋值到我们程序定义号的参数表中,而表中的数据直接会影响到各个子函数的运行。实例(部分):

-- 项目数据表ProjectData
PD = {
    --需要设置的参数:
    Reading = 0,         --阅读模式设置和计时
    packInterval=300,   --打包数据上传间隔,单位秒,注意:刚设置后为下个周期生效
    stairSize =0.406,   --梯级纵深
    TsetMax = 90,       --温度报警上限
    TsetMin = -10,      --温度报警下限
    VsetMax = 3,        --速度报警上限

。。。这样无论有多少需要设置的参数,都是那三四行代码解决。

  • 发表于 2019-09-25 15:08
  • 阅读 ( 1884 )
  • 分类:默认分类

1 条评论

请先 登录 后评论
不写代码的码农
丁小泉ZJ

7 篇文章

作家榜 »

  1. 技术销售Delectate 43 文章
  2. 陈夏 26 文章
  3. 国梁 24 文章
  4. miuser 21 文章
  5. 晨旭 20 文章
  6. 朱天华 19 文章
  7. 金艺 19 文章
  8. 杨奉武 18 文章