查看: 143|回复: 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教程 汇总贴




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

    本版积分规则

    热门推荐

    KittenBot杯第六届开源硬件开发大赛启动啦
    KittenBot杯第六届开源硬
    大赛简介: 第六届开源硬件开发大赛由Arduino中文社区发起 由KittenBot冠名赞助
    arduino温湿度无线传感控制系统
    arduino温湿度无线传感控
    求求你我真的不会,要挂科了,我快哭了真的。如何把功能1234合在一起,目前只会功能2
    请问大神们,这是怎么回事
    请问大神们,这是怎么回事
    出现了这个问题,不知道怎么改,求助大神
    [游戏发布]飞机大战
    [游戏发布]飞机大战
    飞机大战游戏,你可以通过按键控制飞机躲避障碍,直到30000分通关 你要控制飞
    一 个 维 信,改 变你 的 一 生
    一 个 维 信,改 变你 的
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表