2个不稳定版本
0.2.0 | 2019年8月6日 |
---|---|
0.1.0 | 2019年7月30日 |
#1264 in 编码
每月下载量214
在orgize中使用
7KB
serde_indextree
序列化indextree
结构。
版本支持
indextree 版本 |
serde_indextree 版本 |
---|---|
3.3.x | 0.1.x |
4.0.x | 0.2.x |
用法
serde_indextree
提供了两个结构体:Node
用于序列化节点及其后代,SiblingNodes
用于序列化节点及其兄弟节点。
use indextree::Arena;
use serde::Serialize;
use serde_indextree::Node;
use serde_json::to_string_pretty;
#[derive(Serialize)]
struct HtmlElement {
tag: &'static str
}
// <html>
// <head>
// <title></title>
// <head>
// <body>
// <h1></h1>
// <h2></h2>
// </body>
// </html>
let arena = &mut Arena::new();
let a = arena.new_node(HtmlElement { tag: "html" });
let b = arena.new_node(HtmlElement { tag: "head" });
a.append(b, arena);
let c = arena.new_node(HtmlElement { tag: "title" });
b.append(c, arena);
let d = arena.new_node(HtmlElement { tag: "body" });
a.append(d, arena);
let e = arena.new_node(HtmlElement { tag: "h1" });
d.append(e, arena);
let f = arena.new_node(HtmlElement { tag: "h2" });
d.append(f, arena);
println!("{}", to_string_pretty(&Node::new(a, arena)).unwrap());
// {
// "tag": "html",
// "children": [
// {
// "tag": "head",
// "children": [
// {
// "tag": "title"
// }
// ]
// },
// {
// "tag": "body",
// "children": [
// {
// "tag": "h1"
// },
// {
// "tag": "h2"
// }
// ]
// }
// ]
// }
定制
遗憾的是,serde_indextree
没有提供任何定制。
如果您想重命名字段名或任何内容,只需复制整个代码(只有40+行)并根据您的意愿进行修改。
许可证
MIT
依赖
~0.5–1.1MB
~24K SLoC