Crates.io | cdumay_json |
lib.rs | cdumay_json |
version | 0.1.1 |
created_at | 2025-06-19 08:09:00.170184+00 |
updated_at | 2025-06-19 09:57:24.602615+00 |
description | A Rust Library for JSON |
homepage | https://github.com/cdumay/cdumay_json |
repository | https://github.com/cdumay/cdumay_json |
max_upload_size | |
id | 1717961 |
size | 19,243 |
A small crate to manipulate Json data.
serde_json::Error
into specific error types (Syntax
, IO
, Data
, EOF
)BTreeMap
convert_json_result!
macro for error conversionUsing the JsonErrorConverter
directly:
use cdumay_core::{Error, ErrorConverter};
use serde_json::Value;
use std::collections::BTreeMap;
use cdumay_json::JsonErrorConverter;
fn parse_json(input: &str) -> cdumay_core::Result<Value> {
serde_json::from_str::<Value>(input).map_err(|e| {
let mut ctx = BTreeMap::new();
ctx.insert("input".to_string(), serde_value::Value::String(input.to_string()));
JsonErrorConverter::convert(&e, "Failed to parse JSON".to_string(), ctx)
})
}
Using the convert_json_result!
macro:
use cdumay_json::convert_json_result;
use serde_json::Value;
use std::collections::BTreeMap;
use cdumay_core::{Error, ErrorConverter};
fn parse_json(input: &str) -> cdumay_core::Result<Value> {
// Basic usage with just the result
convert_json_result!(serde_json::from_str::<Value>(input));
// With custom context
let mut ctx = BTreeMap::new();
ctx.insert("input".to_string(), serde_value::Value::String(input.to_string()));
convert_json_result!(serde_json::from_str::<Value>(input), ctx.clone());
// With custom context and message
convert_json_result!(serde_json::from_str::<Value>(input), ctx, "Failed to parse JSON")
}