mirror of
https://github.com/nushell/nushell.git
synced 2025-05-31 23:26:11 +02:00
to json -r
not removing whitespaces fix (#11948)
fixes #11900 # Description Use `serde_json` instead. # User-Facing Changes The problem described in the issue now no longer persists. No whitespace in the output of `to json --raw` Output of unicode escape changed to consistent `\uffff` # Tests + Formatting I corrected all Tests that were affected by this change.
This commit is contained in:
parent
fdf7f28d07
commit
8237d15683
5
Cargo.lock
generated
5
Cargo.lock
generated
@ -2994,6 +2994,7 @@ dependencies = [
|
|||||||
"linked-hash-map",
|
"linked-hash-map",
|
||||||
"num-traits",
|
"num-traits",
|
||||||
"serde",
|
"serde",
|
||||||
|
"serde_json",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -4946,9 +4947,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_json"
|
name = "serde_json"
|
||||||
version = "1.0.112"
|
version = "1.0.114"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4d1bd37ce2324cf3bf85e5a25f96eb4baf0d5aa6eba43e7ae8958870c4ec48ed"
|
checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"indexmap",
|
"indexmap",
|
||||||
"itoa",
|
"itoa",
|
||||||
|
@ -14,7 +14,7 @@ fn find_with_list_search_with_string() {
|
|||||||
fn find_with_list_search_with_char() {
|
fn find_with_list_search_with_char() {
|
||||||
let actual = nu!("[moe larry curly] | find l | to json -r");
|
let actual = nu!("[moe larry curly] | find l | to json -r");
|
||||||
|
|
||||||
assert_eq!(actual.out, "[\"\u{1b}[37m\u{1b}[0m\u{1b}[41;37ml\u{1b}[0m\u{1b}[37marry\u{1b}[0m\",\"\u{1b}[37mcur\u{1b}[0m\u{1b}[41;37ml\u{1b}[0m\u{1b}[37my\u{1b}[0m\"]");
|
assert_eq!(actual.out, "[\"\\u001b[37m\\u001b[0m\\u001b[41;37ml\\u001b[0m\\u001b[37marry\\u001b[0m\",\"\\u001b[37mcur\\u001b[0m\\u001b[41;37ml\\u001b[0m\\u001b[37my\\u001b[0m\"]");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -48,7 +48,7 @@ fn find_with_filepath_search_with_string() {
|
|||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
actual.out,
|
actual.out,
|
||||||
"[\"\u{1b}[37m\u{1b}[0m\u{1b}[41;37marep\u{1b}[0m\u{1b}[37mas.clu\u{1b}[0m\"]"
|
"[\"\\u001b[37m\\u001b[0m\\u001b[41;37marep\\u001b[0m\\u001b[37mas.clu\\u001b[0m\"]"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -57,7 +57,7 @@ fn find_with_filepath_search_with_multiple_patterns() {
|
|||||||
let actual =
|
let actual =
|
||||||
nu!(r#"["amigos.txt","arepas.clu","los.txt","tres.txt"] | find arep ami | to json -r"#);
|
nu!(r#"["amigos.txt","arepas.clu","los.txt","tres.txt"] | find arep ami | to json -r"#);
|
||||||
|
|
||||||
assert_eq!(actual.out, "[\"\u{1b}[37m\u{1b}[0m\u{1b}[41;37mami\u{1b}[0m\u{1b}[37mgos.txt\u{1b}[0m\",\"\u{1b}[37m\u{1b}[0m\u{1b}[41;37marep\u{1b}[0m\u{1b}[37mas.clu\u{1b}[0m\"]");
|
assert_eq!(actual.out, "[\"\\u001b[37m\\u001b[0m\\u001b[41;37mami\\u001b[0m\\u001b[37mgos.txt\\u001b[0m\",\"\\u001b[37m\\u001b[0m\\u001b[41;37marep\\u001b[0m\\u001b[37mas.clu\\u001b[0m\"]");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -20,6 +20,7 @@ default = ["preserve_order"]
|
|||||||
linked-hash-map = { version = "0.5", optional = true }
|
linked-hash-map = { version = "0.5", optional = true }
|
||||||
num-traits = "0.2"
|
num-traits = "0.2"
|
||||||
serde = "1.0"
|
serde = "1.0"
|
||||||
|
serde_json = "1.0.114"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
# nu-path = { path="../nu-path", version = "0.91.1" }
|
# nu-path = { path="../nu-path", version = "0.91.1" }
|
||||||
|
@ -1032,8 +1032,9 @@ pub fn to_string_raw<T>(value: &T) -> Result<String>
|
|||||||
where
|
where
|
||||||
T: ser::Serialize,
|
T: ser::Serialize,
|
||||||
{
|
{
|
||||||
let vec = to_vec(value)?;
|
let result = serde_json::to_string(value);
|
||||||
let string = String::from_utf8(vec)?;
|
match result {
|
||||||
let output = string.lines().map(str::trim).collect();
|
Ok(result_string) => Ok(result_string),
|
||||||
Ok(output)
|
Err(error) => Err(Error::Io(std::io::Error::from(error))),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,3 +45,11 @@ fn to_json_escaped() -> TestResult {
|
|||||||
r#"{"foo":{"bar":"[{\"a\":\"b\",\"c\": 2}]"}}"#,
|
r#"{"foo":{"bar":"[{\"a\":\"b\",\"c\": 2}]"}}"#,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn to_json_raw_backslash_in_quotes() -> TestResult {
|
||||||
|
run_test(
|
||||||
|
r#"{a: '\', b: 'some text'} | to json -r"#,
|
||||||
|
r#"{"a":"\\","b":"some text"}"#,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user