测试之家
  • 社区
  • 问答
  • 招聘
  • 社区学堂新
  • 开源项目
  • 活动
  • Wiki
  • 注册
  • 登录
会员
hhz (胡恒章)
第 69322 位会员 / 2022-04-22
3 篇帖子 • 11 条回帖
0 关注者
5 正在关注
0 收藏
未设置 GitHub 信息.
  • 個人信息
  • 個人專欄
  • 帖子
  • 回帖
  • 收藏
  • 正在關注
  • 關注者
  • 热门话题
  • 最近回帖
  • 问答 询问社区的大佬们,python 基于反射的方式解析 protobuf 为 json 格式的指导
    0 个赞 / 22 条回复
  • 询问社区的大佬们,python 基于反射的方式解析 protobuf 为 json 格式的指导 at 2022年05月27日

    那就是函数 createPb 中 msg name 我传错了吗

  • 询问社区的大佬们,python 基于反射的方式解析 protobuf 为 json 格式的指导 at 2022年05月26日

    好像实现还是有点问题 ,这样返回的 message 对象好像不对,导致用 json 转 pb 的时候转出的结果是空的

  • 询问社区的大佬们,python 基于反射的方式解析 protobuf 为 json 格式的指导 at 2022年05月19日

    这个调试可以了,非常感谢指导👍

  • 询问社区的大佬们,python 基于反射的方式解析 protobuf 为 json 格式的指导 at 2022年05月19日

    我参照你最新的调试了一下,这个 msgName 应该传承的是 proto 文件中 message 对象的名字吧

  • 询问社区的大佬们,python 基于反射的方式解析 protobuf 为 json 格式的指导 at 2022年05月18日

    另外一个就是 self.pbMoudle 这个列表传值是传生成的 pb 模块名字吗

  • 询问社区的大佬们,python 基于反射的方式解析 protobuf 为 json 格式的指导 at 2022年05月18日

    非常感谢解答,但是还是有几点疑惑哈第一个是 self.descriptor.FindFileByName(file_name)¶ 这个方法传参应该是一个文件名字吧,返回的是一个 FileDescriptor 对象。但是 GetMessages() 传参对象是一个 file_protos – Iterable of FileDescriptorProto 是不能直接传递的吧

  • pb 数据的使用 -- 游戏协议工具实战 at 2022年04月28日

    能麻烦老哥具体指导一下 python 如何基于反射去解析 protobuf,目前在做协议测试卡主了

  • 询问社区的大佬们,python 基于反射的方式解析 protobuf 为 json 格式的指导 at 2022年04月28日

    那如何基于 编译后的 pb2.py 文件,进行 json 和 pb 序列化数据的准换呢
    目前了解到的是都是需要 import ***pb2.py 然后再根据 protobuf 文件结构去序列化和反序列化。 但是这种方式因为在第一行要导入模块所以感觉不太通用。是想做一个通用的方法去解析多个 protobuf 文件然后在官网上了解到 reflection 模块中 ParseMessage 方法

    .protobuf.reflection.ParseMessage(descriptor, byte_str)
    

    但这个方法第一个参数对象的初始化里面很多参数都不太清楚

    class google.protobuf.descriptor.Descriptor(name, full_name, filename, containing_type, fields, nested_types, enum_types, extensions, options=None, serialized_options=None, is_extendable=True, extension_ranges=None, oneofs=None, file=None, serialized_start=None, serialized_end=None, syntax=None, create_key=None)
    
  • pb 数据的使用 -- 游戏协议工具实战 at 2022年04月28日

    确实看的有点吃力啊 在文档中有看到 reflect 模块中提供了这个方法

    def ParseMessage(descriptor, byte_str):
      """Generate a new Message instance from this Descriptor and a byte string.
      DEPRECATED: ParseMessage is deprecated because it is using MakeClass().
      Please use MessageFactory.GetPrototype() instead.
      Args:
        descriptor: Protobuf Descriptor object
        byte_str: Serialized protocol buffer byte string
      Returns:
        Newly created protobuf Message object.
      """
      result_class = MakeClass(descriptor)
      new_msg = result_class()
      new_msg.ParseFromString(byte_str)
      return new_msg
    

    但是第一个参数 descriptor 的对象初始化参数传值不太明白又没有示例

    class google.protobuf.descriptor.Descriptor(name, full_name, filename, containing_type, fields, nested_types, enum_types, extensions, options=None, serialized_options=None, is_extendable=True, extension_ranges=None, oneofs=None, file=None, serialized_start=None, serialized_end=None, syntax=None, create_key=None)
    
  • 询问社区的大佬们,python 基于反射的方式解析 protobuf 为 json 格式的指导 at 2022年04月28日

    希望是原生的 protobuf 文件

关于 / 活跃用户 / 中国移动互联网测试技术大会 / 反馈 / Github / API / 帮助推广
TesterHome社区,测试之家,由众多测试工程师组织和维护的技术社区,致力于帮助新人成长,提高测试地位,推进质量发展。Inspired by RubyChina
友情链接 WeTest腾讯质量开放平台 / InfoQ / 掘金 / SegmentFault / 测试窝 / 百度测试吧 / IT大咖说
简体中文 / 正體中文 / English

©testerhome.com 测试之家   渝ICP备2022001292号
  渝公网安备 50022202000435号    版权所有 © 重庆年云聚力信息技术有限公司