1use std::default::Default;
2use std::fmt::Debug;
3
4use super::*;
5
6#[derive(Debug)]
7pub struct Json {
8 format: Serializers,
9}
10
11impl Default for Json {
12 fn default() -> Json {
13 Json {
14 format: Serializers::Json(".json".to_owned()),
15 }
16 }
17}
18
19#[cfg(feature = "json_ser")]
20impl<'a> Serializer<'a> for Json {
21 fn format(&self) -> &Serializers {
22 &self.format
23 }
24
25 fn serialize<T>(&self, data: &T) -> Result<Vec<u8>, Error>
26 where
27 for<'de> T: serde::Serialize + serde::Deserialize<'de>,
28 {
29 let mut vec = serde_json::to_vec(data)?;
30 vec.extend(b"\n");
31 Ok(vec)
32 }
33 fn deserialize<T>(&self, data: &[u8]) -> Result<T, Error>
34 where
35 for<'de> T: serde::Serialize + serde::Deserialize<'de>,
36 {
37 let vec = serde_json::from_slice::<T>(data)?;
38 Ok(vec)
39 }
40}