Helper function to convert Python Any to JSON
(value: &Bound<'_, PyAny>)
| 441 | |
| 442 | /// Helper function to convert Python Any to JSON |
| 443 | fn python_any_to_json(value: &Bound<'_, PyAny>) -> PyResult<serde_json::Value> { |
| 444 | if value.is_none() { |
| 445 | Ok(serde_json::Value::Null) |
| 446 | } else if let Ok(s) = value.extract::<String>() { |
| 447 | Ok(serde_json::Value::String(s)) |
| 448 | } else if let Ok(i) = value.extract::<i64>() { |
| 449 | Ok(serde_json::Value::Number(serde_json::Number::from(i))) |
| 450 | } else if let Ok(f) = value.extract::<f64>() { |
| 451 | if let Some(num) = serde_json::Number::from_f64(f) { |
| 452 | Ok(serde_json::Value::Number(num)) |
| 453 | } else { |
| 454 | Ok(serde_json::Value::Null) |
| 455 | } |
| 456 | } else if let Ok(b) = value.extract::<bool>() { |
| 457 | Ok(serde_json::Value::Bool(b)) |
| 458 | } else if let Ok(dict) = value.downcast::<PyDict>() { |
| 459 | python_dict_to_json(&dict) |
| 460 | } else { |
| 461 | // Fallback to string representation |
| 462 | Ok(serde_json::Value::String(value.to_string())) |
| 463 | } |
| 464 | } |
no test coverage detected