c# - 以文本格式(不是二进制)保存的序列化程序,不需要公共构造函数并且可以保存字段
问题描述
我正在寻找一个序列化器来以文本格式(不是二进制)保存我的类。但...
我已经在使用 protobuf 进行二进制序列化。它工作得很好。作为旁注,我不希望像处理 protobuf 那样处理字段 id(索引)。
在结束或投票结束此问题之前,请考虑以下几点:
- 这个问题的特殊性
- 如果其他问题确实适用于我的要求并且不太老
我正在寻找具有以下属性的序列化程序:
- 便于使用
- 在文本中序列化(可读)Json 或 XML 都可以
- 自由的
- 记录在案
- 轻松支持版本控制(过时字段、类型更改、属性名称更改……)
- 使用 Attribute 定义要序列化(或不序列化)的项目
- 不使用索引(ID 像 Protobuf)
- 能够像 Protobuf 一样,直接反序列化对象而无需任何构造函数。如果对象没有任何公共构造函数并且没有任何没有参数的构造函数,则能够实例化对象。
- 不需要我更改我的班级或成员可访问性,即:
- 不需要默认构造函数
- 可以序列化字段
- 可以跳过公共财产(当标记为这样做时)
其他不重要的点:
- 速度不重要
- 开源是一个不错的奖励
- 有一些例子是一个不错的奖励
我不喜欢使用的一些示例:
- Microsoft XMLSerializer 和 JsonSerializer 确实需要默认构造函数。
- 我很难使用 Microsoft-DataContractSerializer,欢迎使用更简单的解决方案。
解决方案
推荐阅读
- c - 如何在 Kotlin/Native 中从 C 导入生成的 Kotlin 类?
- python - Pandas 散点图上不显示 X 轴标签和次要刻度标签
- javascript - 以编程方式输入击键 javascript
- java - 如果超过 AWS Neptune Server 的容量,是否限制请求数量(读取、更新、删除)?
- html - 为什么 css 没有应用于具有相同类的元素?
- c# - Blazor:如何检查 OnFieldChanged 中的字段是否有效
- r - 每次在列中出现一个值时,有没有办法增加一个数字?
- google-analytics - Google Analytics - 自定义维度客户 ID 未显示
- api - 停止或禁用 API REST WSO2 ESB 的重试次数
- python - 在 Python + selenium 控制台中打印不出来