2个不稳定版本

0.2.0 2019年8月6日
0.1.0 2019年7月30日

#1264 in 编码

Download history 81/week @ 2024-03-24 153/week @ 2024-03-31 95/week @ 2024-04-07 77/week @ 2024-04-14 79/week @ 2024-04-21 54/week @ 2024-04-28 50/week @ 2024-05-05 56/week @ 2024-05-12 53/week @ 2024-05-19 69/week @ 2024-05-26 66/week @ 2024-06-02 40/week @ 2024-06-09 67/week @ 2024-06-16 68/week @ 2024-06-23 41/week @ 2024-06-30 30/week @ 2024-07-07

每月下载量214
orgize中使用

MIT许可证

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