3 个不稳定版本
0.2.0 | 2024年4月29日 |
---|---|
0.1.1 | 2023年7月25日 |
0.1.0 | 2022年1月9日 |
在 编码 中排名 347
每月下载量 366
用于 testcontainers
41KB
903 行
Serde Java Properties
Java Properties 是一种简单、面向行的格式,用于指定在 Java 程序中使用的键值资源。此 crate 提供了基本(反)序列化器,用于与 serde 启用的数据结构一起使用。
field_a: a value
field_b: 100
field_c: true
实现
内部,使用 java-properties
crate 在输入流中迭代键值对,并将键值对写入输出流。
反序列化结构体
通常,该格式是无类型的,即它将反序列化为从 String
到 String
的映射。此 crate 使用整数、浮点数和布尔值的默认 std::str::FromStr
实现,为之上提供有类型接口。这样,可以加载属性文件中的简单结构或实现 serde::Deserialize
的映射。
use serde::Deserialize;
#[derive(Debug, PartialEq, Deserialize)]
struct Data {
field_a: String,
field_b: usize,
field_c: bool,
}
let text = "
field_a: a value
field_b: 100
field_c: true
";
let data: Data = serde_java_properties::from_str(text).unwrap();
assert_eq!(data.field_a, "a value");
assert_eq!(data.field_b, 100);
assert_eq!(data.field_c, true);
序列化结构体
序列化使用每个原始类型的默认 std::fmt::Display
实现。
在顶级 Serializer
中支持
- 映射
- 结构体
- 结构体变体的枚举
- 所有这些的可选
在字段级别 Serializer
中支持
- 整数(
i8
、i16
、i32
、i64
、u8
、u16
、u32
、u64
) - 浮点数(
f32
、f64
) - 布尔值(
true
或false
) - 字符串
- 单元变体的枚举
- 所有这些的可选
use serde::Serialize;
#[derive(Debug, PartialEq, Serialize)]
struct Data {
field_a: String,
field_b: usize,
field_c: bool,
}
let data = Data { field_a: "value".to_string(), field_b: 100, field_c: true };
let string = serde_java_properties::to_string(&data).unwrap();
assert_eq!(string, "field_a=value\nfield_b=100\nfield_c=true\n");
替代方案
类似于java-properties
crate本身,这个crate应该与Java中指定的格式完全匹配,如Java所述。如果您需要一个更强大的配置语法,支持嵌套结构,您可能应该使用HOCON。
依赖项
约7MB
约181K SLoC