Как добавить пользовательскую сериализацию / десериализацию для protobuf? - PullRequest
1 голос
/ 18 мая 2019

У меня есть определение сообщения как

message ID {
    string value = 1;
}

message User {
    ID id = 1;
    google.protobuf.StringValue name = 2;
}

Теперь, если я сериализую экземпляр User в json, я получу что-то вроде этого

{
    "id": {
        "value" : "myid"
    }
    "name" : "Josh"
}

Как вы можете видеть для типов WKT, значение не указано. Однако для моего пользовательского типа сообщения Пользователь значение является вложенным. Как мне сделать вывод похожим на

{
    "id": "myid"
    "name" : "Josh"
}

Я имею в виду, как сериализовать, десериализовать в пользовательский тип.

Один вариант, о котором я могу подумать, это обновить эту функцию https://github.com/protocolbuffers/protobuf/blob/master/python/google/protobuf/json_format.py#L199 Это значит, иметь копию json_format.py и расширить _IsWrapperMessage для моих пользовательских типов

...