1[package]
2name = "serde_json"
3version = "1.0.140"
4authors = ["Erick Tryzelaar <erick.tryzelaar@gmail.com>", "David Tolnay <dtolnay@gmail.com>"]
5categories = ["encoding", "parser-implementations", "no-std"]
6description = "A JSON serialization file format"
7documentation = "https://docs.rs/serde_json"
8edition = "2021"
9keywords = ["json", "serde", "serialization"]
10license = "MIT OR Apache-2.0"
11repository = "https://github.com/serde-rs/json"
12rust-version = "1.56"
13
14[dependencies]
15indexmap = { version = "2.2.3", optional = true }
16itoa = "1.0"
17memchr = { version = "2", default-features = false }
18ryu = "1.0"
19serde = { version = "1.0.194", default-features = false }
20
21[dev-dependencies]
22automod = "1.0.11"
23indoc = "2.0.2"
24ref-cast = "1.0.18"
25rustversion = "1.0.13"
26serde = { version = "1.0.194", features = ["derive"] }
27serde_bytes = "0.11.10"
28serde_derive = "1.0.166"
29serde_stacker = "0.1.8"
30trybuild = { version = "1.0.81", features = ["diff"] }
31
32[package.metadata.docs.rs]
33features = ["preserve_order", "raw_value", "unbounded_depth"]
34targets = ["x86_64-unknown-linux-gnu"]
35rustdoc-args = [
36 "--generate-link-to-definition",
37 "--extern-html-root-url=core=https://doc.rust-lang.org",
38 "--extern-html-root-url=alloc=https://doc.rust-lang.org",
39 "--extern-html-root-url=std=https://doc.rust-lang.org",
40]
41
42[package.metadata.playground]
43features = ["float_roundtrip", "raw_value", "unbounded_depth"]
44
45
46### FEATURES #################################################################
47
48[features]
49default = ["std"]
50
51std = ["memchr/std", "serde/std"]
52
53# Provide integration for heap-allocated collections without depending on the
54# rest of the Rust standard library.
55# NOTE: Disabling both `std` *and* `alloc` features is not supported yet.
56alloc = ["serde/alloc"]
57
58# Make serde_json::Map use a representation which maintains insertion order.
59# This allows data to be read into a Value and written back to a JSON string
60# while preserving the order of map keys in the input.
61preserve_order = ["indexmap", "std"]
62
63# Use sufficient precision when parsing fixed precision floats from JSON to
64# ensure that they maintain accuracy when round-tripped through JSON. This comes
65# at an approximately 2x performance cost for parsing floats compared to the
66# default best-effort precision.
67#
68# Unlike arbitrary_precision, this feature makes f64 -> JSON -> f64 produce
69# output identical to the input.
70float_roundtrip = []
71
72# Use an arbitrary precision number representation for serde_json::Number. This
73# allows JSON numbers of arbitrary size/precision to be read into a Number and
74# written back to a JSON string without loss of precision.
75#
76# Unlike float_roundtrip, this feature makes JSON -> serde_json::Number -> JSON
77# produce output identical to the input.
78arbitrary_precision = []
79
80# Provide a RawValue type that can hold unprocessed JSON during deserialization.
81raw_value = []
82
83# Provide a method disable_recursion_limit to parse arbitrarily deep JSON
84# structures without any consideration for overflowing the stack. When using
85# this feature, you will want to provide some other way to protect against stack
86# overflows, such as by wrapping your Deserializer in the dynamically growing
87# stack adapter provided by the serde_stacker crate. Additionally you will need
88# to be careful around other recursive operations on the parsed result which may
89# overflow the stack after deserialization has completed, including, but not
90# limited to, Display and Debug and Drop impls.
91unbounded_depth = []
92