[package]
name = "serde_json"
version = "1.0.109"
authors = ["Erick Tryzelaar <erick.tryzelaar@gmail.com>", "David Tolnay <dtolnay@gmail.com>"]
categories = ["encoding", "parser-implementations", "no-std"]
description = "A JSON serialization file format"
documentation = "https://docs.rs/serde_json"
edition = "2021"
keywords = ["json", "serde", "serialization"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/serde-rs/json"
rust-version = "1.56"

[dependencies]
indexmap = { version = "2", optional = true }
itoa = "1.0"
ryu = "1.0"
serde = { version = "1.0.166", default-features = false }

[dev-dependencies]
automod = "1.0.11"
indoc = "2.0.2"
ref-cast = "1.0.18"
rustversion = "1.0.13"
serde = { version = "1.0.166", features = ["derive"] }
serde_bytes = "0.11.10"
serde_derive = "1.0.166"
serde_stacker = "0.1.8"
trybuild = { version = "1.0.81", features = ["diff"] }

[lib]
doc-scrape-examples = false

[package.metadata.docs.rs]
features = ["raw_value", "unbounded_depth"]
targets = ["x86_64-unknown-linux-gnu"]
rustdoc-args = ["--cfg", "docsrs", "--generate-link-to-definition"]

[package.metadata.playground]
features = ["raw_value"]


### FEATURES #################################################################

[features]
default = ["std"]

std = ["serde/std"]

# Provide integration for heap-allocated collections without depending on the
# rest of the Rust standard library.
# NOTE: Disabling both `std` *and* `alloc` features is not supported yet.
alloc = ["serde/alloc"]

# Make serde_json::Map use a representation which maintains insertion order.
# This allows data to be read into a Value and written back to a JSON string
# while preserving the order of map keys in the input.
preserve_order = ["indexmap", "std"]

# Use sufficient precision when parsing fixed precision floats from JSON to
# ensure that they maintain accuracy when round-tripped through JSON. This comes
# at an approximately 2x performance cost for parsing floats compared to the
# default best-effort precision.
#
# Unlike arbitrary_precision, this feature makes f64 -> JSON -> f64 produce
# output identical to the input.
float_roundtrip = []

# Use an arbitrary precision number representation for serde_json::Number. This
# allows JSON numbers of arbitrary size/precision to be read into a Number and
# written back to a JSON string without loss of precision.
#
# Unlike float_roundtrip, this feature makes JSON -> serde_json::Number -> JSON
# produce output identical to the input.
arbitrary_precision = []

# Provide a RawValue type that can hold unprocessed JSON during deserialization.
raw_value = []

# Provide a method disable_recursion_limit to parse arbitrarily deep JSON
# structures without any consideration for overflowing the stack. When using
# this feature, you will want to provide some other way to protect against stack
# overflows, such as by wrapping your Deserializer in the dynamically growing
# stack adapter provided by the serde_stacker crate. Additionally you will need
# to be careful around other recursive operations on the parsed result which may
# overflow the stack after deserialization has completed, including, but not
# limited to, Display and Debug and Drop impls.
unbounded_depth = []
