converting python dict to protobuf

Viewed 3733

How can I convert the following dict to protobuf ?
I have to send a protobuf as a payload to an mqtt broker. I'm using python 3.8

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

My protobuf is defined as follows:

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;
}
1 Answers

How about this?

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)
Related