#json #codec #nbt #decoding #array-string

bin+lib emp

高效的打包系统,NBT 但更好!

5 个稳定版本

1.1.0 2021 年 10 月 10 日
1.0.3 2021 年 9 月 28 日
1.0.2 2021 年 9 月 27 日

#866编码

自定义许可证

54KB
1K SLoC

EMP

高效管理的打包系统,NBT 但更好!

使用 rust crate

Rust 结构

pub enum Value {
  Null,
  Object(std::collections::HashMap<std::string::String, Value>),
  Array(std::vec::Vec<Value>),
  String(std::string::String),
  Bit(bool),
  Boolean(bool),
  Int32(i32),
  Float(f32),
  Double(f64),
  Int64(i64),
  Int16(i16),
  Int8(i8),
}

编码

使用 emp::encode::encode,你可以传递一个 emp::value::Value 并得到一个 std::vec::Vec<u8>,这将把 Value 中的数据编码成字节,然后你可以将其写入文件。

解码

使用 emp::decode::decode,你可以传递一个 &[u8] 并返回一个 Result<emp::value::Value, emp::errors::DecodeError>

DecodeError 是一个枚举,如下所示

pub enum DecodeError {
  UnexpectedByte(u8, u64),
  EOFError,
  UnmatchedKey(std::string::String),
  StringDecodeError(std::str::Utf8Error),
}

你也可以使用 emp::decode::decode_safe 并传递相同的数据以相同的方式解码数据,但如果出现 Err,它将返回 emp::value::Value::Null

解析

使用 emp::value::parse::from_str 函数,您可以传入一个 &str 将其转换为 Result<emp::value::Value, emp::errors::ParseError>。或者您也可以使用 emp::value::parse::from_str_safe 并传入相同的内容,如果遇到错误,则返回 emp::value::Value::Null

JSON 兼容性

转换

此包与 serde_json 兼容,通过使用 emp::value::json::from_json,您可以转换 serde_json::Valueemp::value::Value,反之亦然使用 emp::value::json::to_json

编码

使用 emp::encode::json::encode_json,您可以直接将 serde_json::Value 编码为 emp 字节码。

解码

使用 emp::decode::json::decode_json,您可以直接将 emp 字节码解码为 serde_json::Value,这使用 decode_safe 而不是 decode。您也可以使用 emp::decode::json::decode_json_unsafe 来获取错误而不是 serde_json::Value::Null

命令行工具

您可以使用 emp 运行它

┌───────────────────────────────────┐
│[E]fficiently [M]anaged [P]ackaging│
│               Help:               │
│                                   │
│[-r | --read] <filename>: Reads the│
│EMP bytecode and prints it out as a│
│EMP string.                        │
│                                   │
│[-w | --write] <filename> <emp>:|Writes the EMP data into the file  │
│as EMP bytecode.                   │
│                                   │
│NOTE: Make sure your EMP data is in│
│quotes.                            │
│                                   │
│[-fj | --from_json] <json>: Parses │
│the JSON data and prints it out as │
│an EMP string.                     │
│                                   │
│NOTE: Make sure your json data is  │
│in quotes.                         │
│                                   │
│[-tj | --to_json] <emp>: Parses the│
│EMP data and prints it out as a    │
│json string.                       │
│                                   │
│NOTE: Make sure your EMP data is in│
│quotes.                            │
│                                   │
│[-v | --version]: Prints out the   │
│version of EMP you are using       │
└───────────────────────────────────┘

依赖关系

~355–760KB
~17K SLoC