2018-11-12 16:20:49 [显示全部楼层]
3529浏览
查看: 3529|回复: 0

[ESP32系列教程] ESP32 MicroPython教程:编码JSON

[复制链接]
本micropython教程旨在阐释如何使用ESP32上的MicroPython和ujson库编码JSON消息。

简介

本文旨在阐释如何使ESP32的MicroPython和ujson库(https://docs.micropython.org/en/latest/pyboard/library/ujson.html)编码JSON消息。启用MicroPython支持的方法请参阅这篇以前的帖子:
此外,如果你需要JSON的解析指南,请查看上一篇教程:ESP32 MicroPython教程:解析JSON


代码

首先,我们需要通过以下命令导入ujson模块:
  1.   import ujson
复制代码
重要提示:本文撰写之际,ujson还是MicroPython固件内含的模块之一,因此我们无需执行其他步骤即可直接导入该模块。但如果你无法直接导入,则说明默认配置中可能不再包含该模块,需进行手动安装。
我们要尝试获取的JSON消息示例如下。其模拟的是物联网设备可能发出的消息,包含设备(温度传感器)类型和部分虚拟测量值。
  1.    {
  2.     "deviceType": "Temperature",
  3.     "values": [23,22,25]
  4.      }
复制代码
因此,我们需要将消息的结构放在变量中。此处将用到Python字典(https://docs.python.org/2/tutorial/datastructures.html#dictionaries),其作为名称-值结构非常适合JSON的结构。
首先,将一个空字典赋值给一个名为dict的变量。然后,将字符串“Temperature”(温度)赋值给键“deviceType”(设备类型)。
我们还要将一个包含JSON所示值的列表(https://docs.python.org/2/tutorial/datastructures.html#more-on-lists)赋值给键“values”(值)。请注意,Python字典的值可以是列表等对象[1]。
赋值后,我们将打印字典变量,此步骤只是为了确认赋值无误。
  1.     dict = {}
  2.     dict["deviceType"] = "Temperature"
  3.     dict["values"] = [23,22,25]
  4.      print(dict)
复制代码
那么,执行了上文代码之后,我们应该会得到类似于图1的结果。如图所示,我们得到了一个包含一些名称-值对的字典结构。请注意,Python字典的字符串表示形式与JSON字符串非常相似。

TueJuly-202107209051..png
图1 - Python字典的内容。


为了完成示例,我们现在将通过ujson模块的dumps函数(https://docs.micropython.org/en/latest/pyboard/library/ujson.html#ujson.dumps)将字典转换为JSON字符串。此方法以字典作为输入值进行接收并返回其JSON字符串表示形式。调用此函数后,我们将打印结果。
  1.     encoded = ujson.dumps(dict)
  2.      print(encoded)
复制代码
最终结果如图2所示,其打印了已编码的字符串。请注意,此输出结果与我们之前获得的字典的字符串表示形式非常相似,但它的名称和值现在是介于双引号而不是单引号之间,这就是JSON的格式。

TueJuly-202107207400..png
图2 - JSON编码程序的最终输出结果。

注:本文作者是Nuno Santos,他是一位和蔼可亲的电子和计算机工程师,住在葡萄牙里斯本 (Lisbon)。

查看更多ESP32/ESP8266教程和项目,请点击 : ESP32教程 汇总贴
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2021 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail