基础序列化
本页涵盖基础对象图序列化和支持的类型。
对象图序列化
Apache Fory™ 提供复杂对象图的自动序列化,保留对象之间的结构和关系。#[derive(ForyObject)] 宏在编译时生成高效的序列化代码,消除运行时开销。
核心功能:
- 任意深度的嵌套结构体序列化
- 集合类型(Vec、HashMap、HashSet、BTreeMap)
- 使用
Option<T>的可选字段 - 原始类型和字符串的自动处理
- 使用变长整数的高效二进制编码
use fory::{Fory, Error};
use fory::ForyObject;
use std::collections::HashMap;
#[derive(ForyObject, Debug, PartialEq)]
struct Person {
name: String,
age: i32,
address: Address,
hobbies: Vec<String>,
metadata: HashMap<String, String>,
}
#[derive(ForyObject, Debug, PartialEq)]
struct Address {
street: String,
city: String,
country: String,
}
let mut fory = Fory::default();
fory.register::<Address>(100);
fory.register::<Person>(200);
let person = Person {
name: "John Doe".to_string(),
age: 30,
address: Address {
street: "123 Main St".to_string(),
city: "New York".to_string(),
country: "USA".to_string(),
},
hobbies: vec!["reading".to_string(), "coding".to_string()],
metadata: HashMap::from([
("role".to_string(), "developer".to_string()),
]),
};
let bytes = fory.serialize(&person);
let decoded: Person = fory.deserialize(&bytes)?;
assert_eq!(person, decoded);