#json #deserialize-json #deserialize #reflection #shapely #serialization

shapely-json

JSON serialization and deserialization for Shapely types

5 releases (3 major breaking)

Uses new Rust 2024

new 3.0.0 Mar 11, 2025
2.0.1 Mar 11, 2025
1.0.0 Mar 10, 2025
0.1.0-alpha.1 Mar 10, 2025

#605 in Encoding

Download history

105 downloads per month

MIT/Apache

28KB
394 lines

shapely-json

experimental free of syn crates.io documentation MIT/Apache-2.0 licensed

[!IMPORTANT]

There is no stable shapely API as of now (even though it's >1.0.0). The design is very much still being explored.

Expect multiple major versions in the near future — (note left 2025-03-11)

A serialization and deserialization library for JSON using the shapely runtime reflection system.

Features

  • Simple JSON deserialization for any type implementing the Shapely trait
  • Detailed error reporting with context
  • Support for nested structs and scalar values

Example

use shapely::Shapely;
use shapely_json::from_json;

#[derive(Debug, Shapely, PartialEq)]
struct Person {
    name: String,
    age: u64,
}

let json = r#"{"name": "Alice", "age": 30}"#;

let mut partial = Person::partial();
from_json(&mut partial, json).expect("Failed to parse JSON");

let person = partial.build::<Person>();
assert_eq!(person, Person { name: "Alice".to_string(), age: 30 });

License

Licensed under either of:

at your option.

Dependencies

~270KB