如何使用Python提取本地Azure JSON blob文件中的原始设备遥测报文
提取JSON报文操作指引
可以通过Python提取原始JSON报文,具体操作步骤如下:
- 第一步:停止使用
pandas.read_csv()读取该文件,该方法为CSV格式文件专用读取工具,不适用当前JSON格式的二进制文件场景。首先以二进制只读模式打开本地存储的05.JSON文件,读取文件的原始字节内容,示例操作参考代码:
with open("05.JSON", "rb") as f: raw_bytes = f.read()
- 第二步:对读取到的原始字节内容做编码解码,常规Azure设备遥测blob默认使用UTF-8编码,可优先尝试该编码解码得到明文字符串,若UTF-8解码报错可尝试替换为GBK、UTF-16等其他适配编码,示例操作参考代码:
# 常规UTF-8解码 decoded_content = raw_bytes.decode("utf-8") # 解码出现乱码、报错时可使用忽略异常的兼容模式 decoded_content = raw_bytes.decode("utf-8", errors="ignore")
- 第三步:使用Python标准库
json将解码后的明文字符串加载为可直接读取的JSON结构化对象,即可查看原始报文的完整结构,示例操作参考代码:
import json json_data = json.loads(decoded_content)
- 第四步:如果需要转为Pandas数据框做后续分析,可使用
pandas.json_normalize()方法将解析完成的JSON对象转为结构化数据框,示例操作参考代码:
import pandas as pd df = pd.json_normalize(json_data)
特殊场景说明:如果解码后的内容仍然不是标准JSON格式,说明原始blob存储时可能做了gzip压缩、base64编码等预处理,需要先对应完成解压/解码操作后再加载JSON;如果是Azure IoT Hub自动导出的遥测blob,通常每条遥测报文为单独一行的JSON格式,可先按换行符分割解码后的内容,再逐行解析JSON。
内容的提问来源于stack exchange,提问作者user13160236
相关产品推荐
相关产品推荐

