mirror of
https://github.com/nushell/nushell
synced 2024-12-27 13:33:16 +00:00
* fix issue #559: to json -r serializes datetime without spaces * add in a third test which checks spaces in both keys and values * fix clippy error
This commit is contained in:
parent
3706bef0a1
commit
f50f37c853
2 changed files with 34 additions and 4 deletions
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
use std::fmt::{Display, LowerExp};
|
use std::fmt::{Display, LowerExp};
|
||||||
use std::io;
|
use std::io;
|
||||||
|
use std::io::{BufRead, BufReader};
|
||||||
use std::num::FpCategory;
|
use std::num::FpCategory;
|
||||||
|
|
||||||
use super::error::{Error, ErrorCode, Result};
|
use super::error::{Error, ErrorCode, Result};
|
||||||
|
@ -1032,7 +1033,20 @@ where
|
||||||
T: ser::Serialize,
|
T: ser::Serialize,
|
||||||
{
|
{
|
||||||
let vec = to_vec(value)?;
|
let vec = to_vec(value)?;
|
||||||
let mut string = String::from_utf8(vec)?;
|
let string = remove_json_whitespace(vec);
|
||||||
string.retain(|c| !c.is_whitespace());
|
|
||||||
Ok(string)
|
Ok(string)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn remove_json_whitespace(v: Vec<u8>) -> String {
|
||||||
|
let reader = BufReader::new(&v[..]);
|
||||||
|
let mut output = String::new();
|
||||||
|
for line in reader.lines() {
|
||||||
|
match line {
|
||||||
|
Ok(line) => output.push_str(line.trim().trim_end()),
|
||||||
|
_ => {
|
||||||
|
eprintln!("Error removing JSON whitespace");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
output
|
||||||
|
}
|
||||||
|
|
|
@ -15,9 +15,25 @@ fn from_json_2() -> TestResult {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn to_json_raw_flag() -> TestResult {
|
fn to_json_raw_flag_1() -> TestResult {
|
||||||
run_test(
|
run_test(
|
||||||
"[[a b]; [jim susie] [3 4]] | to json -r",
|
"[[a b]; [jim susie] [3 4]] | to json -r",
|
||||||
r#"[{"a":"jim","b":"susie"},{"a":3,"b":4}]"#,
|
r#"[{"a": "jim","b": "susie"},{"a": 3,"b": 4}]"#,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn to_json_raw_flag_2() -> TestResult {
|
||||||
|
run_test(
|
||||||
|
"[[\"a b\" c]; [jim susie] [3 4]] | to json -r",
|
||||||
|
r#"[{"a b": "jim","c": "susie"},{"a b": 3,"c": 4}]"#,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn to_json_raw_flag_3() -> TestResult {
|
||||||
|
run_test(
|
||||||
|
"[[\"a b\" \"c d\"]; [\"jim smith\" \"susie roberts\"] [3 4]] | to json -r",
|
||||||
|
r#"[{"a b": "jim smith","c d": "susie roberts"},{"a b": 3,"c d": 4}]"#,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue