protobuf-net - 设置为 0 的整数被序列化(使用 protobuf-net)为空。有什么办法可以解决这个问题?
问题描述
设置为 0 的整数值被序列化为 null。似乎 0 被视为默认值并在序列化过程中被忽略。有没有办法解决这个问题?
解决方案
默认情况下,protobuf-net 遵循零 ===default===not-serialized 的 proto3 约定,但您可以通过使用IsRequired
on覆盖此行为ProtoMemberAttribute
:
[ProtoMember(42, IsRequired = true)]
public int Foo {get;set;}
或者,在更高级的场景中,您可以使用“条件序列化”(同样的方法适用于各种序列化程序):
[ProtoMember(42)]
public int Foo {get;set;}
public bool ShouldSerializeFoo() { /* your own rules here */ }
推荐阅读
- c# - 将时区信息添加到日期时间对象 C#
- visual-studio-code - 我的 Visual Studio 代码扩展未显示在侧边栏中
- android - 检测应用程序是否从最近的应用程序列表中关闭或被操作系统杀死
- jquery - 加载预选选项时隐藏和显示表单元素
- c# - 当父视图具有相同的模型时,如何在部分视图中获取 HTML 表单数据以进行序列化?
- python - 如何通过比较两个数据框来计算缺失值
- swiftui-list - SwiftUI 列表在 @ObservedObject 更新时冻结
- git - 代码被两天前提交到 github 的旧代码覆盖。我应该怎么做才能获得本地代码?
- iis - IIS 处理同一网站内多个应用程序的 url 请求
- r - 使用 source() 函数在 Linux 中导出/打印 R 图