diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c99278..1889b8c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [1.1.3] - 2024-01-29 + +### Changed + +- Fixed a bug where serialization of decimal values would write them as empty objects. + ### Added ## [1.1.2] - 2023-11-15 diff --git a/Microsoft.Kiota.Serialization.Json.Tests/JsonSerializationWriterTests.cs b/Microsoft.Kiota.Serialization.Json.Tests/JsonSerializationWriterTests.cs index 181a2c3..5dd9e9e 100644 --- a/Microsoft.Kiota.Serialization.Json.Tests/JsonSerializationWriterTests.cs +++ b/Microsoft.Kiota.Serialization.Json.Tests/JsonSerializationWriterTests.cs @@ -21,12 +21,14 @@ public void WritesSampleObjectValue() WorkDuration = TimeSpan.FromHours(1), StartWorkTime = new Time(8, 0, 0), BirthDay = new Date(2017, 9, 4), + HeightInMetres = 1.80m, AdditionalData = new Dictionary { {"mobilePhone",null}, // write null value {"accountEnabled",false}, // write bool value {"jobTitle","Author"}, // write string value {"createdDateTime", DateTimeOffset.MinValue}, // write date value + {"weightInKgs", 51.80m}, // write weigth {"businessPhones", new List() {"+1 412 555 0109"}}, // write collection of primitives value {"endDateTime", new DateTime(2023,03,14,0,0,0,DateTimeKind.Utc) }, // ensure the DateTime doesn't crash {"manager", new TestEntity{Id = "48d31887-5fad-4d73-a9f5-3c356e68a038"}}, // write nested object value @@ -45,11 +47,13 @@ public void WritesSampleObjectValue() "\"id\":\"48d31887-5fad-4d73-a9f5-3c356e68a038\"," + "\"workDuration\":\"PT1H\","+ // Serializes timespans "\"birthDay\":\"2017-09-04\"," + // Serializes dates + "\"heightInMetres\":1.80,"+ "\"startWorkTime\":\"08:00:00\"," + //Serializes times "\"mobilePhone\":null," + "\"accountEnabled\":false," + "\"jobTitle\":\"Author\"," + "\"createdDateTime\":\"0001-01-01T00:00:00+00:00\"," + + "\"weightInKgs\":51.80,"+ "\"businessPhones\":[\"\\u002B1 412 555 0109\"]," + "\"endDateTime\":\"2023-03-14T00:00:00+00:00\"," + "\"manager\":{\"id\":\"48d31887-5fad-4d73-a9f5-3c356e68a038\"}" + diff --git a/Microsoft.Kiota.Serialization.Json.Tests/Mocks/TestEntity.cs b/Microsoft.Kiota.Serialization.Json.Tests/Mocks/TestEntity.cs index 83f83ee..46dd21d 100644 --- a/Microsoft.Kiota.Serialization.Json.Tests/Mocks/TestEntity.cs +++ b/Microsoft.Kiota.Serialization.Json.Tests/Mocks/TestEntity.cs @@ -26,6 +26,8 @@ public class TestEntity : IParsable, IAdditionalDataHolder /// Read-only. public DateTimeOffset? CreatedDateTime { get; set; } /// Read-only. + public decimal? HeightInMetres { get; set; } + /// Read-only. public string OfficeLocation { get; set; } /// /// Instantiates a new entity and sets the default values. @@ -46,6 +48,7 @@ public virtual IDictionary> GetFieldDeserializers() {"createdDateTime", n => { CreatedDateTime = n.GetDateTimeOffsetValue(); } }, {"officeLocation", n => { OfficeLocation = n.GetStringValue(); } }, {"workDuration", n => { WorkDuration = n.GetTimeSpanValue(); } }, + {"heightInMetres", n => { HeightInMetres = n.GetDecimalValue(); } }, {"birthDay", n => { BirthDay = n.GetDateValue(); } }, {"startWorkTime", n => { StartWorkTime = n.GetTimeValue(); } }, {"endWorkTime", n => { EndWorkTime = n.GetTimeValue(); } }, @@ -65,6 +68,7 @@ public virtual void Serialize(ISerializationWriter writer) writer.WriteStringValue("officeLocation", OfficeLocation); writer.WriteTimeSpanValue("workDuration", WorkDuration); writer.WriteDateValue("birthDay", BirthDay); + writer.WriteDecimalValue("heightInMetres", HeightInMetres); writer.WriteTimeValue("startWorkTime", StartWorkTime); writer.WriteTimeValue("endWorkTime", EndWorkTime); writer.WriteAdditionalData(AdditionalData); diff --git a/src/JsonSerializationWriter.cs b/src/JsonSerializationWriter.cs index a7777f5..b38c12c 100644 --- a/src/JsonSerializationWriter.cs +++ b/src/JsonSerializationWriter.cs @@ -403,6 +403,9 @@ private void WriteAnyValue(string? key, T value) case double d: WriteDoubleValue(key, d); break; + case decimal dec: + WriteDecimalValue(key, dec); + break; case Guid g: WriteGuidValue(key, g); break; diff --git a/src/Microsoft.Kiota.Serialization.Json.csproj b/src/Microsoft.Kiota.Serialization.Json.csproj index cff544e..2e42897 100644 --- a/src/Microsoft.Kiota.Serialization.Json.csproj +++ b/src/Microsoft.Kiota.Serialization.Json.csproj @@ -14,7 +14,7 @@ https://aka.ms/kiota/docs true true - 1.1.2 + 1.1.3 true true