From fd5da62c668a72f6d969e70dd39d5302d6a2f283 Mon Sep 17 00:00:00 2001 From: Darren Schroeder <343840+fdncred@users.noreply.github.com> Date: Wed, 2 Jun 2021 16:12:21 -0500 Subject: [PATCH] accomodate decimals when converting gjson numbers (#3544) --- crates/nu_plugin_query_json/src/query_json.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/crates/nu_plugin_query_json/src/query_json.rs b/crates/nu_plugin_query_json/src/query_json.rs index 967faa26..e4a83f16 100644 --- a/crates/nu_plugin_query_json/src/query_json.rs +++ b/crates/nu_plugin_query_json/src/query_json.rs @@ -91,6 +91,7 @@ fn query_contains_modifiers(query: &str) -> bool { fn convert_gjson_value_to_nu_value(v: &gjValue, tag: impl Into) -> Value { let tag = tag.into(); + let span = tag.span; match v.kind() { gjson::Kind::Array => { @@ -104,7 +105,14 @@ fn convert_gjson_value_to_nu_value(v: &gjValue, tag: impl Into) -> Value { } gjson::Kind::Null => UntaggedValue::nothing().into_value(&tag), gjson::Kind::False => UntaggedValue::boolean(false).into_value(&tag), - gjson::Kind::Number => UntaggedValue::int(v.i64()).into_value(&tag), + gjson::Kind::Number => { + let str_value = v.str(); + if str_value.contains('.') { + UntaggedValue::decimal_from_float(v.f64(), span).into_value(&tag) + } else { + UntaggedValue::int(v.i64()).into_value(&tag) + } + } gjson::Kind::String => UntaggedValue::string(v.str()).into_value(&tag), gjson::Kind::True => UntaggedValue::boolean(true).into_value(&tag), // I'm not sure how to test this, so it may not work