diff --git a/arrow/Cargo.toml b/arrow/Cargo.toml
index 7b3d4c64ad71..151cd2987938 100644
--- a/arrow/Cargo.toml
+++ b/arrow/Cargo.toml
@@ -41,7 +41,7 @@ bench = false
ahash = { version = "0.7", default-features = false }
serde = { version = "1.0", default-features = false }
serde_derive = { version = "1.0", default-features = false }
-serde_json = { version = "1.0", default-features = false, features = ["preserve_order"] }
+serde_json = { version = "1.0", default-features = false, features = ["std"] }
indexmap = { version = "1.9", default-features = false, features = ["std"] }
rand = { version = "0.8", default-features = false, features = ["std", "std_rng"], optional = true }
num = { version = "0.4", default-features = false, features = ["std"] }
diff --git a/arrow/src/json/writer.rs b/arrow/src/json/writer.rs
index 0755a5758e4e..f21dad04313b 100644
--- a/arrow/src/json/writer.rs
+++ b/arrow/src/json/writer.rs
@@ -745,6 +745,21 @@ mod tests {
use super::*;
+ /// Asserts that the NDJSON `input` is semantically identical to `expected`
+ fn assert_json_eq(input: &[u8], expected: &str) {
+ let expected: Vec