idewave_formatters/
json_formatter.rs1use std::io::{Write};
2use serde_json::ser::{PrettyFormatter, Serializer};
3
4#[derive(Default)]
5pub struct JsonFormatter {
6 pretty: PrettyFormatter<'static>,
7}
8
9impl JsonFormatter {
10 pub fn init() -> Serializer<Vec<u8>, Self> {
11 let buffer = Vec::new();
12 Serializer::with_formatter(buffer, JsonFormatter::default())
13 }
14}
15
16impl serde_json::ser::Formatter for JsonFormatter {
17 fn begin_object<W>(&mut self, writer: &mut W) -> std::io::Result<()> where W: ?Sized + Write {
18 self.pretty.begin_object(writer)
19 }
20
21 fn end_object<W>(&mut self, writer: &mut W) -> std::io::Result<()> where W: ?Sized + Write {
22 self.pretty.end_object(writer)
23 }
24
25 fn begin_object_key<W>(
26 &mut self,
27 writer: &mut W,
28 first: bool
29 ) -> std::io::Result<()> where W: ?Sized + Write {
30 self.pretty.begin_object_key(writer, first)
31 }
32
33 fn end_object_value<W>(&mut self, writer: &mut W) -> std::io::Result<()> where W: ?Sized + Write {
34 self.pretty.end_object_value(writer)
35 }
36}