首页 > 解决方案 > 将 python dict 转换为 protobuf

问题描述

如何将以下 dict 转换为 protobuf ?
我必须将 protobuf 作为有效负载发送到 mqtt 代理。我正在使用 python 3.8

publish_msg = {
        "token":"xxxxxxxx",
        "parms":{
            "fPort":8,
            "data":b"MDQzYzAwMDE=",
            "confirmed":False,
            "devEUI":"8CF9572000023509"
        }
    }

我的protobuf定义如下:

syntax = "proto3";
package publish;


message DLParams{
    string DevEUI = 1;
    int32 FPort = 2;
    bytes Data = 3;
    bool Confirm = 4;
}

message DeviceDownlink {
    string Token = 1;
    DLParams Params = 2;
}

标签: pythondictionaryprotocol-buffers

解决方案


这个怎么样?

import json
from google.protobuf import json_format

# Create an empty message
dl = DeviceDownlink_pb2.DeviceDownlink()

# Get the json string for your dict
json_string = json.dumps(publish_msg)

# Put the json contents into your message
json_format.Parse(json_string, dl)

推荐阅读