use crate::error::{NeomemxError, Result};
use serde::de::DeserializeOwned;
pub fn extract_json<T: DeserializeOwned>(text: &str) -> Result<T> {
if let Some(start) = text.find('{') {
if let Some(end) = text.rfind('}') {
let json_str = &text[start..=end];
return serde_json::from_str(json_str)
.map_err(|e| NeomemxError::LlmError(format!("Failed to parse JSON: {}", e)));
}
}
serde_json::from_str(text)
.map_err(|e| NeomemxError::LlmError(format!("Failed to parse JSON: {}", e)))
}