You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

添加时间字段后Python JSON格式无效,无法同步至Azure IoT Hub及DX

解决Azure IoT Hub传输日期时间字段的JSON格式问题

问题根源

你生成的无效JSON里,timesent字段的值既没有用双引号包裹(不符合JSON字符串格式要求),也不是Azure DX兼容的标准日期时间格式,导致解析失败。

可行解决方案

1. 生成标准格式的时间字符串

Azure DX对时序数据的日期时间字段,推荐使用ISO 8601格式(带UTC时区标识优先),比如2022-11-08T14:21:04.021812Z,同时必须确保这个值是JSON字符串类型(用双引号包裹)。

2. 修改Python代码实现

基于你使用的微软模拟设备示例代码,做以下修改:

  • 先导入datetime模块
  • 在生成温湿度数据的代码块中,添加生成ISO格式时间的逻辑
  • 将时间字符串加入待发送的JSON字典

示例代码片段:

import datetime
# ... 原代码其他部分 ...

while True:
    temperature = random.randint(0, 100)
    humidity = random.randint(0, 100) + random.random()
    # 生成UTC时间的ISO 8601格式字符串
    timesent = datetime.datetime.utcnow().isoformat() + 'Z'
    # 构造符合要求的JSON数据
    msg_formatted = {
        "temperature": temperature,
        "humidity": humidity,
        "timesent": timesent
    }
    # 转换为JSON字符串发送
    message = Message(json.dumps(msg_formatted))
    # ... 原代码发送逻辑 ...

3. 验证正确的JSON格式

修改后生成的有效JSON示例:

{"temperature": 7,"humidity": 72.88, "timesent": "2022-11-08T14:21:04.021812Z"}

额外提示

  • 若需使用本地时间,可替换为datetime.datetime.now().isoformat(),但建议优先用UTC时间避免时区混乱
  • 在Azure DX的映射配置中,需将timesent字段的类型设置为DateTime,确保能正确识别并用于时序分析

内容的提问来源于stack exchange,提问作者JoeHo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 23:25:36