1 个不稳定版本
0.1.0 | 2022年4月22日 |
---|
#904 在 #serde
62KB
1.5K SLoC
serde_jce
Jce格式对serde-rs的支持
lib.rs
:
对serde-rs
的Jce格式支持
该crate基于serde
。如果您尚未使用过serde
,建议首先阅读serde_json
的文档。
公共成员
to_bytes
- 将对象序列化为Jce格式to_bytes_with_tag
- 使用特定标记将对象序列化为Jce格式from_bytes
- 将Jce格式反序列化为对象Jcebuilder
- 构建Jce格式的工具JceParser
- 解析Jce格式的工具Value
- 一个递归枚举,可能能够表示所有合法的Jce数据
强类型数据结构
use serde::{Deserialize, Serialize}; // with serde_derive
#[derive(PartialEq, Debug, Serialize, Deserialize)]
struct Struct {
#[serde(rename = "0")]
v0: i8,
#[serde(rename = "1")]
v1: i16,
}
let val = Struct {
v0: 0x12,
v1: 0x3456,
};
let bytes = vec![0x0a, 0x00, 0x12, 0x11, 0x34, 0x56, 0x0b];
assert_eq!(serde_jce::to_bytes(&val), Ok(bytes.clone()));
assert_eq!(serde_jce::from_bytes(&bytes), Ok(val));
与字节一起
如果您想将&[u8]
/Vec<u8>
字段作为Jce格式中的bytes
进行序列化和反序列化。
请使用由serde_bytes
提供的标记#[serde(with = "serde_bytes")]
标记字段。
serde_jce::Value
use std::collections::BTreeMap as Map;
enum Value {
Zero,
Int(i64),
Float(f32),
Double(f64),
String(String),
Bytes(Vec<u8>),
List(Vec<Value>),
Map(Map<Value, Value>), // std::collections::BTreeMap
Object(Map<u8, Value>), // std::collections::BTreeMap
}
依赖关系
~330–580KB
~12K SLoC