查看: 305|回复: 0

ESP32 MicroPython教程:编码JSON

[复制链接]
  • TA的每日心情

    2018-1-11 13:58
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    发表于 2018-11-26 10:43 | 显示全部楼层 |阅读模式
    本帖最后由 dfrobot 于 2018-11-26 10:51 编辑

    micropython教程旨在阐释如何使用ESP32上的MicroPython和ujson库编码JSON消息。
    简介

    本文旨在阐释如何使用ESP32上的MicroPython和ujson库编码JSON消息。启用MicroPython支持的方法请参阅这篇以前的帖子。此外,如果你需要JSON的解析指南,请查看上一篇教程。
    代码

    首先,我们需要通过以下命令导入ujson模块:
    1  import ujson

    重要提示:本文撰写之际,ujson还是MicroPython固件内含的模块之一,因此我们无需执行其他步骤即可直接导入该模块。但如果你无法直接导入,则说明默认配置中可能不再包含该模块,需进行手动安装。
    我们要尝试获取的JSON消息示例如下。其模拟的是物联网设备可能发出的消息,包含设备(温度传感器)类型和部分虚拟测量值。
    1   {
    2    "deviceType": "Temperature",
    3    "values": [23,22,25]
    4     }

    因此,我们需要将消息的结构放在变量中。此处将用到Python字典,其作为名称-值结构非常适合JSON的结构。
    首先,将一个空字典赋值给一个名为dict的变量。然后,将字符串“Temperature”(温度)赋值给键“deviceType”(设备类型)。
    我们还要将一个包含JSON所示值的列表赋值给键“values”(值)。请注意,Python字典的值可以是列表等对象[1]。

    赋值后,我们将打印字典变量,此步骤只是为了确认赋值无误。
    1    dict = {}
    2    dict["deviceType"] = "Temperature"
    3    dict["values"] = [23,22,25]
    4
    5     print(dict)

    那么,执行了上文代码之后,我们应该会得到类似于图1的结果。如图所示,我们得到了一个包含一些名称-值对的字典结构。请注意,Python字典的字符串表示形式与JSON字符串非常相似。

    Figure 1 – Content of the Python dictionary..png
    图1 - Python字典的内容。

    为了完成示例,我们现在将通过ujson模块的dumps函数将字典转换为JSON字符串。此方法以字典作为输入值进行接收并返回其JSON字符串表示形式。调用此函数后,我们将打印结果。

    1    encoded = ujson.dumps(dict)
    2     print(encoded)
    最终结果如图2所示,其打印了已编码的字符串。请注意,此输出结果与我们之前获得的字典的字符串表示形式非常相似,但它的名称和值现在是介于双引号而不是单引号之间,这就是JSON的格式。

    Figure 2 – Final output of the JSON encoding program..png
    图2 - JSON编码程序的最终输出结果。

    查看更多ESP32/ESP8266教程和项目,请点击 : ESP32教程 汇总贴




    打赏作者鼓励一下!
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    博哥零基础教你玩转ESP8266(十三) ESP8266WiFiGeneric库
    博哥零基础教你玩转ESP826
    帖子导航帖 博哥零基础教你玩转ESP8266(一) 重识ESP8266 博哥零基础教你玩转ESP8266
    求助!WeMos D1 WiFi怎么接0.96寸OLED?(ㄒoㄒ)
    求助!WeMos D1 WiFi怎么
    求助!WeMos D1 WiFi怎么接0.96寸OLED?(ㄒoㄒ) 想用WeMos D1 WiFi接收服务器的数据然
    串口发送16进制指令求助
    串口发送16进制指令求助
    我准备串口发出16进制指令到我的外置设备 代码如下图 我分别监控ARDUINO的tx口和USB口
    一文教你选择Arduino开发板,小白进
    一文教你选择Arduino开发
    笔者在2016年接触了Arduino,跳了万条坑,行了千里弯,到今天也算是Arduino的一
    大神们!1602显示屏上的MQ2浓度示数不是实时监测的何解
    大神们!1602显示屏上的MQ
    本人小白,刚刚接触arduino,长时间的查阅资料后,通过复制修改代码接线实现了DHT11实
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表