serde-knowledge-patch
Serde Knowledge Patch
Covers serde_json 1.0.129–1.0.143 (Nov 2024 – Aug 2025). Claude Opus 4.6 knows serde through 1.0.200 and serde_json through 1.0.128.
Index
| Topic | Reference | Key features |
|---|---|---|
| Map operations | references/map-operations.md | sort_keys, sort_all_objects, Map as Deserializer, FromStr for Map |
| RawValue | references/rawvalue.md | NULL, TRUE, FALSE associated constants |
Quick Reference — New serde_json APIs
| API | Version | What it does |
|---|---|---|
Map::sort_keys() |
1.0.129 | Sort map keys alphabetically in place |
Value::sort_all_objects() |
1.0.129 | Recursively sort all nested object keys |
Map<String, Value>: Deserializer |
1.0.131 | Deserialize structs directly from a map |
&Map<String, Value>: IntoDeserializer |
1.0.131 | Use &map with Deserialize::deserialize |
RawValue::NULL |
1.0.134 | Associated constant for raw "null" |
RawValue::TRUE |
1.0.134 | Associated constant for raw "true" |
RawValue::FALSE |
1.0.134 | Associated constant for raw "false" |
Map<String, Value>: FromStr |
1.0.143 | Parse JSON string into a Map via .parse() |
Essential Patterns (inline)
Sort JSON keys — deterministic output
use serde_json::{Map, Value, json};
// Sort a single map's keys
let mut map: Map<String, Value> = serde_json::from_str(r#"{"z":1,"a":2}"#)?;
map.sort_keys();
// map is now {"a":2,"z":1}
// Recursively sort all nested objects
let mut value = json!({"z": {"c": 1, "a": 2}, "a": 3});
value.sort_all_objects();
// {"a":3,"z":{"a":2,"c":1}}
Use sort_all_objects() before serializing when you need deterministic JSON output (e.g., for hashing, diffing, or snapshot tests).
Deserialize struct directly from a Map
use serde::Deserialize;
use serde_json::{Map, Value};
#[derive(Deserialize)]
struct Config { name: String, count: u32 }
let map: Map<String, Value> = serde_json::from_str(r#"{"name":"x","count":5}"#)?;
let config = Config::deserialize(&map)?;
Avoids the round-trip through Value when you already have a Map. Works with both owned Map and &Map.
RawValue associated constants
use serde_json::value::RawValue;
let null: &RawValue = RawValue::NULL; // raw "null"
let t: &RawValue = RawValue::TRUE; // raw "true"
let f: &RawValue = RawValue::FALSE; // raw "false"
Useful when constructing partial JSON responses or default values without allocation.
Parse JSON string directly into a Map
use serde_json::Map;
let map: Map<String, serde_json::Value> = r#"{"a":1}"#.parse()?;
Shorthand for serde_json::from_str when you know the top-level value is an object.
More from nevaberry/nevaberry-plugins
dioxus-knowledge-patch
Dioxus changes since training cutoff (latest: 0.7.4) — Signals replacing use_state, RSX macro overhaul, server functions, asset!() system, dx CLI, Element-as-Result. Load before working with Dioxus.
46rust-knowledge-patch
Rust changes since training cutoff (latest: 1.94.0) \u2014 Rust 2024 Edition, async closures, trait upcasting, new std APIs, cargo resolver v3. Load before working with Rust.
20postgresql-knowledge-patch
PostgreSQL changes since training cutoff (latest: 18.1) — JSON_TABLE, SQL/JSON functions, MERGE RETURNING, virtual generated columns, UUIDv7, temporal PRIMARY KEY. Load before working with PostgreSQL.
16bun-knowledge-patch
Bun changes since training cutoff (latest: 1.3.10) \u2014 S3 client, built-in SQL/Redis, route-based HTTP server, CSS bundler, V8 compatibility. Load before working with Bun.
14nextjs-knowledge-patch
Next.js changes since training cutoff (latest: 16.1) — proxy.ts, \"use cache\", Cache Components, navigation hooks, typed routes, auto PageProps, React 19.2. Load before working with Next.js.
14postgis-knowledge-patch
PostGIS changes since training cutoff (latest: 3.6.1) — SFCGAL CG_* rename, ST_CoverageClean, ST_AsRasterAgg, topology bigint IDs, viewport simplification, 3D SFCGAL ops. Load before working with PostGIS.
13