Skip to content

Commit d13e814

Browse files
committed
feat(app): use pretty compact formatter to format json payloads
Signed-off-by: Deep Panchal <[email protected]>
1 parent 31c1eda commit d13e814

File tree

3 files changed

+30
-6
lines changed

3 files changed

+30
-6
lines changed

Cargo.lock

Lines changed: 16 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,5 @@ term_size = "0.3.2"
2222
tokio = { version = "1.44.0", features = ["full"] }
2323
env_logger = "0.11.6"
2424
log = "0.4.26"
25+
json-pretty-compact = "0.1.2"
26+
serde = "1.0.219"

src/format.rs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
use colored::*;
2-
use serde_json::Value;
2+
use json_pretty_compact::PrettyCompactFormatter;
3+
use serde_json::{Serializer, Value};
4+
use serde::ser::Serialize;
35
use std::hash::{Hash, Hasher};
46

57
pub fn format_mqtt_log_entry(topic: &str, payload: &str) -> String {
@@ -22,7 +24,15 @@ pub fn format_mqtt_log_entry(topic: &str, payload: &str) -> String {
2224

2325
fn format_payload(payload: &str) -> String {
2426
match serde_json::from_str::<Value>(payload) {
25-
Ok(value) => serde_json::to_string_pretty(&value).unwrap_or_else(|_| payload.to_string()),
27+
Ok(value) => {
28+
let mut buffer = Vec::new();
29+
let formatter = PrettyCompactFormatter::new();
30+
let mut ser = Serializer::with_formatter(&mut buffer, formatter);
31+
match value.serialize(&mut ser) {
32+
Ok(_) => String::from_utf8_lossy(&buffer).into_owned(),
33+
Err(_) => payload.to_string(),
34+
}
35+
}
2636
Err(_) => payload.to_string(),
2737
}
2838
}

0 commit comments

Comments
 (0)