Skip to main content

format_json_output

Function format_json_output 

Source
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.