1 个不稳定版本
0.1.0 | 2024年7月26日 |
---|
#523 在 编码
每月下载量 143
24KB
585 行
Json builder
一个用于使用简单 DSL 创建 JSON 结构的 JSON 构建器(基于 Jbuilder)。这是一个简单易用的工具,用于在 Rust 中创建 JSON 结构。
示例
notes @notes |note| do
content @note.content
author do
name @note.author.name
age @note.author.age
end
comments @note.comments |comment| do
content @comment.content
author do
name @comment.author.name
age @comment.author.age
end
end
end
使用上述 DSL 构建以下 JSON 结构:
{
"notes": [
{
"content": "Note content",
"author": {
"name": "Author name",
"age": 20
},
"comments": [
{
"content": "Comment content",
"author": {
"name": "Comment author name",
"age": 25
}
}
]
}
]
}
安装
将以下内容添加到您的 Cargo.toml
文件中
[dependencies]
jsonbuilder = "0.1.0"
用法
use jsonbuilder::{JsonBuilder, context_map};
#[derive(Serialize)]
struct Note {
content: String,
}
fn main() {
let context = context_map!({
"note" => Note::new(),
})
let json = JsonBuilder::render("data", context)
}
JsonBuilder 在 templates
目录中搜索以 json
结尾的文件。
或者您可以使用原始字符串进行渲染
use jsonbuilder::JsonBuilder;
#[derive(Serialize)]
struct Note {
content: String,
}
fn main() {
let context = context_map!({
"note" => Note::new(),
})
let input = "
note @note.content
...
"
let json = JsonBuilder::render_raw(input, context)
}
设置
您可以通过在项目根目录下创建一个 jsonbuilder.toml
文件来更改设置。
template_path = "another/path/to/templates"
语法
语法基于 Jbuilder,并且与之非常相似。以下是一个支持语法的列表
变量
name @variable
数组映射
names @names |item| do
name @item
end
对象映射
person do
name @person.name
age @person.age
_ @person.abilities # _ is a special character that allows you to access the entire object
end
路线图
- 基本 DSL
- 数组映射
- 对象映射
- 扩展其他模板
- 条件语句
- 合并对象
贡献
欢迎贡献!您可以自由地打开一个问题或提交一个拉取请求。
有关更多信息,请参阅贡献指南。
许可证
本项目采用 MIT 许可证 - 请参阅LICENSE 文件以获取详细信息。
依赖关系
~2.6–3.5MB
~75K SLoC