当前位置: 首页 > 知识库问答 >
问题:

protobuf 3中的非官方必填字段

方高丽
2023-03-14

我知道这个问题。

由于其高效的编码、显式模式和广泛的支持,我正在考虑将原型3用于文件格式。然而,模式中非常不方便的一部分是它不允许必填字段。

谷歌有理由删除Protobuf 3中的必填字段。他们遇到的问题是真实的(删除必填字段是一个突破性的改变),但他们的解决方案是胡说八道。

无论如何,我的问题是:Protobuf 3允许您为字段添加自定义选项。是否有人使用该方法(或其他方法)向Protobuf 3中添加对必填字段的非正式支持?

共有2个答案

蓝慈
2023-03-14

Dropbox的Rust库支持注释来实现这一点!

  • (gogoproto.nullable)=false生成不可为空的字段类型
  • (rust.nullable)=false将oneofs生成为不可为空(反序列化失败)
  • (rust.err_if_default_or_unknown)=true将枚举生成为不可归零(反序列化失败)
翟柏
2023-03-14

是否希望使用Protobuf对文件格式进行隐式验证,即如果数据中不存在所需字段,是否希望文件解析失败?如果是这样,您可以使用包装器类型,如果您试图从不存在的字段读取它们的值,这些类型将触发错误。

 类似资料:
  • 我使用自省来查询输入类型,以创建一个表单来更改实体。 就我所理解的类型而言。对于必填/非空字段,种类信息应返回非空。但我收到了标量。。。 如何获取查询的inputField的必填字段信息?

  • Krpano 可以方便快速的构建出全景图或全景视频。根据不同需求可制作不同模板,轻松拖动图片即可生成全景漫游。Krpano 生成的文件为前端静态文件,仅需静态服务器即可浏览。Krpano 拥有强大的插件系统,可以让 Krpano 支持评论,显示地图等。

  • 问题内容: 如果在Golang中取消编组时,如果在json中找不到字段,是否可能会产生错误?我在文档中找不到它。是否有任何标记指定所需的字段? 问题答案: 程序包中没有将字段设置为“必需”的标签。您要么必须编写自己的方法,要么对缺少的字段进行后期检查。 要检查缺少的字段,您将必须使用指针以区分缺失/空值和零值: 完整的工作示例: 操场

  • 问题内容: 与可选字段相比,应如何处理? 由于所有字段都是可选的,因此我无法根据响应json是否包含某些密钥来真正使我的网络请求失败,只需将其解析为null。 我正在使用的方法 例如,如果我有以下json: 而我的班级: 如果json不包含或不包含密钥,是否有任何选择会失败? 在许多情况下,您可能至少需要解析一些值,而其他值是可选的? 是否有任何模式或库可用于全局处理这种情况? 谢谢。 问题答案:

  • 问题内容: 我有一个表格,其中的两个字段根据需要在我不希望出现时也出现。这是来自models.py的表格 在实际的电路模型中,字段的定义如下: 我的views.py在这里: 我该怎么做,以便不需要这两个字段? 问题答案: 如果您不想修改模型中字段的空白设置(这样做会破坏管理站点中的常规验证),则可以在Form类中执行以下操作: 重新定义的构造函数不会损害任何功能。

  • 问题内容: 有一个表格,其中的两个字段在我也不希望出现时按要求列出。这是来自models.py的表格 我的views.py在这里: 我该怎么做,以便不需要这两个字段? 问题答案: 如果你不想修改模型中字段的空白设置(这样做将破坏管理站点中的常规验证),则可以在Form类中执行以下操作: 重新定义的构造函数不会损害任何功能。