测试之家
  • 社区
  • 问答
  • 招聘
  • 社区学堂新
  • 开源项目
  • 活动
  • Wiki
  • 注册
  • 登录
会员
Dxd_te (向死而生)
第 37337 位会员 / 2018-09-19
1 篇帖子 • 7 条回帖
1 关注者
0 正在关注
1 收藏
未设置 GitHub 信息.
  • 个人信息
  • 专栏
  • 话题
  • 回帖
  • 收藏
  • 关注中
  • 关注者
  • 热门话题
  • 最近回帖
  • 招聘 [ 武汉 ] 顺丰国际武汉研发处软件测试工程师
    0 个赞 / 0 条回复
  • 询问社区的大佬们,python 基于反射的方式解析 protobuf 为 json 格式的指导 at 2022年05月19日

    😧 我理解你是否想把 python 的 dict 直接转成 pb2.py 文件中的具体的信息类?然后自动填充对应的字段?希望对你有帮助

    import simplejson
    from google.protobuf.descriptor import FieldDescriptor as FD
    
    class ConvertException(Exception):
        pass
    
    def dict2pb(cls, adict, strict=False):
        obj = cls()
        for field in obj.DESCRIPTOR.fields:
            if not field.label == field.LABEL_REQUIRED:
                continue
            if not field.has_default_value:
                continue
            if not field.name in adict:
                raise ConvertException('Field "%s" missing from descriptor dictionary.'
                                       % field.name)
        field_names = set([field.name for field in obj.DESCRIPTOR.fields])
        if strict:
            for key in adict.keys():
                if key not in field_names:
                    raise ConvertException(
                        'Key "%s" can not be mapped to field in %s class.'
                        % (key, type(obj)))
        for field in obj.DESCRIPTOR.fields:
            if not field.name in adict:
                continue
            msg_type = field.message_type
            if field.label == FD.LABEL_REPEATED:
                if field.type == FD.TYPE_MESSAGE:
                    for sub_dict in adict[field.name]:
                        item = getattr(obj, field.name).add()
                        item.CopyFrom(dict2pb(msg_type._concrete_class, sub_dict))
                else:
                    map(getattr(obj, field.name).append, adict[field.name])
            else:
                if field.type == FD.TYPE_MESSAGE:
                    value = dict2pb(msg_type._concrete_class, adict[field.name])
                    getattr(obj, field.name).CopyFrom(value)
                else:
                    setattr(obj, field.name, adict[field.name])
        return obj
    
  • 对象生了一场大病现已出院,我想回老家发展了 at 2021年03月30日

    身体最重要,找到一个人陪你走一辈子更不容易,可以跟女朋友商量下,回家乡看看机会,现在需要你承担起相应的责任呢

  • [北京] RELX 悦刻公司招聘测试工程师 高级测试工程师 多名 (20~50K) at 2021年03月03日

    😀 简历直接发邮箱吗.抽烟有啥福利啊

  • [北京] RELX 悦刻公司招聘测试工程师 高级测试工程师 多名 (20~50K) at 2021年03月03日
    仅楼主可见
  • [深圳] [OPPO] [内容分发测试组 ][长期有效] 急招 服务端测试工程师 和 Android 测试工程师,欢迎大家投递 at 2021年03月02日
    仅楼主可见
  • (成都) 基础架构方向测试工程师招聘 P4-P5 at 2021年03月01日
    仅楼主可见
关于 / 活跃用户 / 中国移动互联网测试技术大会 / 反馈 / Github / API / 帮助推广
TesterHome社区,测试之家,由众多测试工程师组织和维护的技术社区,致力于帮助新人成长,提高测试地位,推进质量发展。Inspired by RubyChina
友情链接 WeTest腾讯质量开放平台 / InfoQ / 掘金 / SegmentFault / 测试窝 / 百度测试吧 / IT大咖说
简体中文 / 正體中文 / English

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