complicated_json/
complicated_json.rs

1#[macro_use]
2extern crate log;
3#[macro_use]
4extern crate s_structured_log;
5extern crate serde_json;
6
7use s_structured_log::{JsonLogger, LoggerOutput, q};
8
9fn main() {
10    JsonLogger::init(LoggerOutput::Stderr, log::LogLevelFilter::Info);
11
12    // use json_object!
13    s_info!(json_object! {
14        "Fruits" => json_object! {
15            "on_the_table" => json_object! {
16                "Apple" => 1,
17                "Orange" => "two",
18                "Grape" => 1.2
19            },
20            "in_the_basket" => ["Banana", "Strawberry"]
21        },
22        "Pets" => [
23            json_object! {
24                "name" => "Tama",
25                "kind" => "cat",
26                "age" => 3
27            },
28            json_object! {
29                "name" => "Pochi",
30                "kind" => "dog",
31                "age" => 5
32            }
33        ]
34    });
35
36    // use json_format! and target with `json:` prefix.
37    info!(target: &format!("json:{}", module_path!()),
38          "{}",
39          json_format! {
40        "Fruits" => json_format! {
41            "on_the_table" => json_format! {
42                "Apple" => 1,
43                "Orange" => q("two"),
44                "Grape" => 1.2
45            },
46            "in_the_basket" => json_format![q("Banana"), q("Strawberry")]
47        },
48        "Pets" => json_format![
49            json_format! {
50                "name" => q("Tama"),
51                "kind" => q("cat"),
52                "age" => 3
53            },
54            json_format! {
55                "name" => q("Pochi"),
56                "kind" => q("dog"),
57                "age" => 5
58            }
59        ]
60    });
61
62    // use json_format! and default target.
63    info!("{}",
64          json_format! {
65        "Fruits" => json_format! {
66            "on_the_table" => json_format! {
67                "Apple" => 1,
68                "Orange" => 2,
69                "Grape" => 1.2
70            },
71            "in_the_basket" => json_format![q("Banana"), q("Strawberry")]
72        },
73        "Pets" => json_format![
74            json_format! {
75                "name" => q("Tama"),
76                "kind" => q("cat")
77            },
78            json_format! {
79                "name" => q("Pochi"),
80                "kind" => q("dog")
81            }
82        ]
83    });
84}