pub struct JsonOutput {
pub matches: Vec<JsonMatchResult>,
}Expand description
JSON output structure containing an array of matches
This structure represents the complete JSON output format for file type detection results, containing an array of matches that can be serialized to JSON for programmatic consumption.
§Examples
use libmagic_rs::output::json::{JsonOutput, JsonMatchResult};
let json_output = JsonOutput {
matches: vec![
JsonMatchResult::new(
"ELF executable".to_string(),
0,
"7f454c46".to_string(),
vec!["executable".to_string(), "elf".to_string()],
90
)
]
};
assert_eq!(json_output.matches.len(), 1);Fields§
§matches: Vec<JsonMatchResult>Array of match results found during evaluation
Implementations§
Source§impl JsonOutput
impl JsonOutput
Sourcepub fn new(matches: Vec<JsonMatchResult>) -> Self
pub fn new(matches: Vec<JsonMatchResult>) -> Self
Create a new JSON output structure
§Arguments
matches- Vector of JSON match results
§Examples
use libmagic_rs::output::json::{JsonOutput, JsonMatchResult};
let matches = vec![
JsonMatchResult::new(
"Text file".to_string(),
0,
"48656c6c6f".to_string(),
vec!["text".to_string()],
60
)
];
let output = JsonOutput::new(matches);
assert_eq!(output.matches.len(), 1);Sourcepub fn from_evaluation_result(result: &EvaluationResult) -> Self
pub fn from_evaluation_result(result: &EvaluationResult) -> Self
Create JSON output from an EvaluationResult
Converts the internal evaluation result to the JSON format specified in the original libmagic specification.
§Arguments
result- The evaluation result to convert
§Examples
use libmagic_rs::output::{EvaluationResult, MatchResult, EvaluationMetadata, json::JsonOutput};
use libmagic_rs::parser::ast::Value;
use std::path::PathBuf;
let match_result = MatchResult::with_metadata(
"Binary data".to_string(),
0,
4,
Value::Bytes(vec![0xde, 0xad, 0xbe, 0xef]),
vec!["binary".to_string()],
70,
None
);
let metadata = EvaluationMetadata::new(1024, 1.5, 10, 1);
let eval_result = EvaluationResult::new(
PathBuf::from("test.bin"),
vec![match_result],
metadata
);
let json_output = JsonOutput::from_evaluation_result(&eval_result);
assert_eq!(json_output.matches.len(), 1);
assert_eq!(json_output.matches[0].text, "Binary data");
assert_eq!(json_output.matches[0].value, "deadbeef");Sourcepub fn add_match(&mut self, match_result: JsonMatchResult)
pub fn add_match(&mut self, match_result: JsonMatchResult)
Add a match result to the output
§Examples
use libmagic_rs::output::json::{JsonOutput, JsonMatchResult};
let mut output = JsonOutput::new(vec![]);
let match_result = JsonMatchResult::new(
"PDF document".to_string(),
0,
"25504446".to_string(),
vec!["document".to_string(), "pdf".to_string()],
85
);
output.add_match(match_result);
assert_eq!(output.matches.len(), 1);Sourcepub fn has_matches(&self) -> bool
pub fn has_matches(&self) -> bool
Check if there are any matches
§Examples
use libmagic_rs::output::json::JsonOutput;
let empty_output = JsonOutput::new(vec![]);
assert!(!empty_output.has_matches());
let output_with_matches = JsonOutput::new(vec![
libmagic_rs::output::json::JsonMatchResult::new(
"Test".to_string(),
0,
"74657374".to_string(),
vec![],
50
)
]);
assert!(output_with_matches.has_matches());Sourcepub fn match_count(&self) -> usize
pub fn match_count(&self) -> usize
Get the number of matches
§Examples
use libmagic_rs::output::json::{JsonOutput, JsonMatchResult};
let matches = vec![
JsonMatchResult::new("Match 1".to_string(), 0, "01".to_string(), vec![], 50),
JsonMatchResult::new("Match 2".to_string(), 10, "02".to_string(), vec![], 60),
];
let output = JsonOutput::new(matches);
assert_eq!(output.match_count(), 2);Trait Implementations§
Source§impl Clone for JsonOutput
impl Clone for JsonOutput
Source§fn clone(&self) -> JsonOutput
fn clone(&self) -> JsonOutput
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for JsonOutput
impl Debug for JsonOutput
Source§impl<'de> Deserialize<'de> for JsonOutput
impl<'de> Deserialize<'de> for JsonOutput
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for JsonOutput
impl RefUnwindSafe for JsonOutput
impl Send for JsonOutput
impl Sync for JsonOutput
impl Unpin for JsonOutput
impl UnwindSafe for JsonOutput
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more