pub fn format_json_output(
match_results: &[MatchResult],
) -> Result<String, Error>Expand description
Format match results as JSON output string
Converts a vector of MatchResult objects into a JSON string following
the original libmagic specification format. The output contains a matches
array with proper field mapping for programmatic consumption.
§Arguments
match_results- Vector of match results to format
§Returns
A JSON string containing the formatted match results, or an error if serialization fails.
§Examples
use libmagic_rs::output::{MatchResult, json::format_json_output};
use libmagic_rs::parser::ast::Value;
let match_results = vec![
MatchResult::with_metadata(
"ELF 64-bit LSB executable".to_string(),
0,
4,
Value::Bytes(vec![0x7f, 0x45, 0x4c, 0x46]),
vec!["executable".to_string(), "elf".to_string()],
90,
Some("application/x-executable".to_string())
),
MatchResult::with_metadata(
"x86-64 architecture".to_string(),
18,
2,
Value::Uint(0x3e00),
vec!["elf".to_string(), "x86_64".to_string()],
85,
None
)
];
let json_output = format_json_output(&match_results).unwrap();
assert!(json_output.contains("\"matches\""));
assert!(json_output.contains("\"text\": \"ELF 64-bit LSB executable\""));
assert!(json_output.contains("\"offset\": 0"));
assert!(json_output.contains("\"value\": \"7f454c46\""));
assert!(json_output.contains("\"score\": 90"));§Errors
Returns a serde_json::Error if the match results cannot be serialized
to JSON, which should be rare in practice since all fields are serializable.