#serde #serialization #conversion

bin+lib tradaf

Tranduit 数据格式:将序列化数据从一种格式转换为另一种格式

2 个版本

0.1.1 2022年12月4日
0.1.0 2022年9月18日

#213 in #conversion

GPL-3.0-or-later

20KB
281

描述

这个工具 "traduit"(法语中为翻译)数据格式。它是在希望将 serde 带到命令行(serdi ^^)的愿望下制作的。但这并不是 serde 的全部内容,我没有与它们有任何关联,因此我不想进行域名抢注。

安装

首先安装 Rust 工具链,然后执行以下命令

cargo install tradaf

使用示例

美化(或压缩)某些数据格式以方便阅读(分别:紧凑和减少要保存/传输的数据量)

tradaf json json --pretty < simple.json 

在数据格式之间进行直接转码

tradaf ron yaml < examples/standard.ron

将其转换为 JSON,这样我们就可以使用 jq 进行一些转换,然后再将其转码回另一种格式以供查看

tradaf RON json < examples/gameConfig.ron | jq .key_bindings | tradaf Json yaml

待办事项

  • 实现所有 数据格式,或者至少那些公开了 serde 序列化器或反序列化器的格式。
    • Bencode
      • 反序列化
      • 序列化
    • BSON
    • CBOR
    • DBus(不确定是否工作,但可以编译…)
    • DynamoDB
    • Envy(仅反序列化)
    • Envy store(仅反序列化)
    • FlexBuffer
      • 公开的 SerializerDeserializer 与 serde-transcode 不兼容。
    • GVariant => 查看 DBus:同一软件包提供了两种
    • HJSON
    • JSON
    • JSON5
      • 反序列化
      • 序列化
    • https://github.com/Lucretiel/kaydle
    • S-Expressions(lisp)
    • Pickle
      • 正确测试双向操作
    • 查询字符串(URL)
      • 反序列化
      • 序列化
    • MessagePack
      • 反序列化
      • 序列化
    • RON
    • TOML
    • YAML
  • 为每个序列化器和每个反序列化器添加测试(至少一个)
  • 检查软件包是否具有我们应该启用/禁用的功能
    • zvariant 默认包含异步运行时
  • 查看我的每个数据格式的笔记,并在软件包上提交问题以指出问题/展示我的项目并寻求帮助
  • 添加适当的错误处理(找一个导师解释正确的错误管理:结构体、枚举、…然后使用 anyway/this_error 如果需要)

依赖项

~11MB
~213K SLoC