跨语言序列化
Apache Fory™ 支持在多种语言(包括 Java、Python、C++、Go 和 JavaScript)之间无缝进行数据交换。
启用跨语言模式
use fory::Fory;
// 启用跨语言 模式
let mut fory = Fory::default()
.compatible(true)
.xlang(true);
// 使用跨语言一致的 ID 注册类型
fory.register::<MyStruct>(100);
// 或使用基于命名空间的注册
fory.register_by_namespace::<MyStruct>("com.example", "MyStruct");
跨语言类型注册
按 ID 注册
对于使用跨语言一致 ID 的快速、紧凑序列化:
let mut fory = Fory::default()
.compatible(true)
.xlang(true);
fory.register::<User>(100); // 在 Java、Python 等中使用相同的 ID
按命名空间注册
对于更灵活的类型命名:
fory.register_by_namespace::<User>("com.example", "User");
跨语言示例
Rust(序列化器)
use fory::Fory;
use fory::ForyObject;
#[derive(ForyObject)]
struct Person {
name: String,
age: i32,
}
let mut fory = Fory::default()
.compatible(true)
.xlang(true);
fory.register::<Person>(100);
let person = Person {
name: "Alice".to_string(),
age: 30,
};
let bytes = fory.serialize(&person)?;
// bytes 可以被 Java、Python 等反序列化