← 返回题库
初级

解析Arduino精简JSON上报

未完成
初级参考 完整示例代码供参考,建议自己理解后重新输入
def solve():
    from pyodide.http import open_url
    from io import StringIO
    import pandas as pd, json
    devs_csv = open_url("https://data.zuihe.com/dbd/ms-devhub/state_00/devices.csv").read()
    devs = pd.read_csv(StringIO(devs_csv))
    def parse_arduino(payload_str):
        p = json.loads(payload_str)
        result = {'device_id':p['id'],'timestamp':p['ts'],'readings':[]}
        mapping = {'t':'temperature','h':'humidity','p':'pressure','l':'light'}
        units = {'t':'degC','h':'%','p':'hPa','l':'lux'}
        for abbrev, full in mapping.items():
            if abbrev in p:
                result['readings'].append({'metric':full,'value':p[abbrev],'unit':units[abbrev]})
        return result
    payloads = [
        '{"id":"ARD-001","ts":1748736001,"t":25.4,"h":60.2,"p":1013}',
        '{"id":"ARD-003","ts":1748736002,"l":3200}',
        '{"id":"ARD-002","ts":1748736003,"t":26.1,"h":58.0}',
    ]
    for p in payloads:
        r = parse_arduino(p)
        print(r['device_id'] + ": " + str([x['metric']+'='+str(x['value']) for x in r['readings']]))

示例

输入
solve()
期望输出
ARD-001: ['temperature=25.4', 'humidity=60.2', 'pressure=1013']
ARD-003: ['light=3200']
ARD-002: ['temperature=26.1', 'humidity=58.0']
Python 代码 🔒 登录后使用
🔒

登录后即可练习

注册免费账号,在浏览器中直接运行 Python 代码