From d36082710825d53bd25aa88d73ed3357f6577f3a Mon Sep 17 00:00:00 2001 From: Andreas Gullberg Larsen Date: Fri, 19 Mar 2021 23:50:16 +0100 Subject: [PATCH] Parse decimal from JSON with invariant culture Fixes parsing JSON for decimal quantities like Power on machines with cultures like Norwegian, where a comma is decimal separator is used. Related to #847, #868 --- .../UnitsNetBaseJsonConverterTest.cs | 4 ++-- UnitsNet.Serialization.JsonNet/UnitsNetBaseJsonConverter.cs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/UnitsNet.Serialization.JsonNet.Tests/UnitsNetBaseJsonConverterTest.cs b/UnitsNet.Serialization.JsonNet.Tests/UnitsNetBaseJsonConverterTest.cs index 49d7e7132b..4927077d1f 100644 --- a/UnitsNet.Serialization.JsonNet.Tests/UnitsNetBaseJsonConverterTest.cs +++ b/UnitsNet.Serialization.JsonNet.Tests/UnitsNetBaseJsonConverterTest.cs @@ -239,7 +239,7 @@ private class TestConverter : UnitsNetBaseJsonConverter var result = ConvertIQuantity(value); if (result is ExtendedValueUnit {ValueType: "decimal"} decimalResult) { - return (result.Unit, decimal.Parse(decimalResult.ValueString)); + return (result.Unit, decimal.Parse(decimalResult.ValueString, CultureInfo.InvariantCulture)); } throw new ArgumentException("The quantity does not have a decimal value", nameof(value)); @@ -274,7 +274,7 @@ public IQuantity Test_ConvertDecimalValueUnit(string unit, decimal value) => Tes if (result is ExtendedValueUnit {ValueType: "decimal"} decimalResult) { - return (result.Unit, decimal.Parse(decimalResult.ValueString)); + return (result.Unit, decimal.Parse(decimalResult.ValueString, CultureInfo.InvariantCulture)); } return null; diff --git a/UnitsNet.Serialization.JsonNet/UnitsNetBaseJsonConverter.cs b/UnitsNet.Serialization.JsonNet/UnitsNetBaseJsonConverter.cs index 9ca02e4275..9ead71de7e 100644 --- a/UnitsNet.Serialization.JsonNet/UnitsNetBaseJsonConverter.cs +++ b/UnitsNet.Serialization.JsonNet/UnitsNetBaseJsonConverter.cs @@ -82,7 +82,7 @@ protected IQuantity ConvertValueUnit(ValueUnit valueUnit) return valueUnit switch { - ExtendedValueUnit {ValueType: "decimal"} extendedValueUnit => Quantity.From(decimal.Parse(extendedValueUnit.ValueString), unit), + ExtendedValueUnit {ValueType: "decimal"} extendedValueUnit => Quantity.From(decimal.Parse(extendedValueUnit.ValueString, CultureInfo.InvariantCulture), unit), _ => Quantity.From(valueUnit.Value, unit) }; }