json_object
A simple, ergonomic, zero-dependency JSON library for Rust — no macros crate needed.
Features
- 🏗️
json!macro — build JSON with familiar literal syntax - 🔍 Dot-path access —
obj.get_path("user.address.city") - ✏️ Fluent builders —
ObjectBuilderandArrayBuilder - 📦 Parse & Serialize — compact and pretty-print output
- 🦀 Zero dependencies — pure
stdonly - ✅ No unsafe code
Installation
[]
= "0.1.0"
Quick Start
use ;
Usage
json! Macro
let v = json!;
Parse from string
let v = parse.unwrap;
assert_eq!;
Reading values
v.as_str // Option<&str>
v.as_i64 // Option<i64>
v.as_f64 // Option<f64>
v.as_bool // Option<bool>
v.as_array // Option<&Vec<Json>>
v.as_object // Option<&HashMap<String, Json>>
// Index operator — returns Json::Null instead of panicking
let name = &v; // Json::Null
// Array index
let first = &v;
// Deep path
v.get_path // Option<&Json>
Mutating values
let mut obj = new_object;
obj.set;
obj.set;
obj.remove;
obj.merge;
obj.contains_key; // true
let mut arr = new_array;
arr.push;
arr.push;
Fluent Builders
// Object
let user = new
.set
.set
.set_if // conditional
.build;
// Array
let scores = new
.push
.push
.push_if // conditional
.extend
.build;
Serialization
let compact = obj.to_json; // {"name":"Rebon402","age":30}
let pretty = obj.to_pretty; // 2-space indent
let tabbed = obj.to_pretty; // tab indent
Type checks
v.is_null // bool
v.is_bool // bool
v.is_int // bool
v.is_float // bool
v.is_number // int or float
v.is_str // bool
v.is_array // bool
v.is_object // bool
Iteration
// Array
for item in obj.iter_array
// Object
for in obj.iter_object
obj.keys // Vec<&String>
obj.values // Vec<&Json>
obj.len // usize
From<T> conversions
All common types convert automatically into Json:
| Rust type | Json variant |
|---|---|
bool |
Json::Bool |
i32, i64, u64, usize |
Json::Int |
f32, f64 |
Json::Float |
&str, String |
Json::Str |
Vec<T> |
Json::Array |
Option<T> |
Json::Null or inner value |
License
MIT — see LICENSE