# What changed in serde_json

> 12 changes in serde_json 1 from its official release notes, upgrade guides and advisories: 6 breaking. Each one cited. Sources checked 2026-11-15. HTML: https://unstale.sh/cargo/serde_json/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## serde_json 1

### Breaking changes

- Formatter trait methods now return `io::Result` instead of `serde_json::Result`. (1.0.0) — [release notes](https://github.com/serde-rs/json/releases/tag/v1.0.0)
- The method now receives `&str` instead of `&[u8]`. (1.0.0) — [release notes](https://github.com/serde-rs/json/releases/tag/v1.0.0)
- The conversion implementation was removed; `serde_json::Error` is intended to be constructed by serde_json. (1.0.0) — [release notes](https://github.com/serde-rs/json/releases/tag/v1.0.0)
- Deserializing from this iterator type is no longer supported; use `serde_json::from_reader` instead. (1.0.0) — [release notes](https://github.com/serde-rs/json/releases/tag/v1.0.0)
- Now supports only arrays and objects, rather than any JSON value. (1.0.0) — [release notes](https://github.com/serde-rs/json/releases/tag/v1.0.0)
- The trait was removed; use `serde_json::to_value` instead. (1.0.0) — [release notes](https://github.com/serde-rs/json/releases/tag/v1.0.0)

### Behavior and default changes

- The preserve_order feature is supported in no_std builds. (1.0.154) — [release notes](https://github.com/serde-rs/json/releases/tag/v1.0.154)
- The writer argument is now passed by value; passing `&mut W` continues to work. (1.0.0) — [release notes](https://github.com/serde-rs/json/releases/tag/v1.0.0)
- Supports efficiently and safely deserializing borrowed data. (1.0.0) — [release notes](https://github.com/serde-rs/json/releases/tag/v1.0.0)

### Fixes and other changes

- Reports invalid UTF-8 at the first bad byte, helping developers locate the error. (1.0.153) — [release notes](https://github.com/serde-rs/json/releases/tag/v1.0.153)
- Preserves the sign of -0 in arbitrary_precision mode. (1.0.152) — [release notes](https://github.com/serde-rs/json/releases/tag/v1.0.152)
- Fixes comparison of large non-integer values with f32::INFINITY. (1.0.152) — [release notes](https://github.com/serde-rs/json/releases/tag/v1.0.152)
