diff --git a/src/JsonParseNode.cs b/src/JsonParseNode.cs index dd311e8..e66b192 100644 --- a/src/JsonParseNode.cs +++ b/src/JsonParseNode.cs @@ -101,7 +101,7 @@ public JsonParseNode(JsonElement node) public DateTimeOffset? GetDateTimeOffsetValue() { // JsonElement.GetDateTimeOffset is super strict so try to be more lenient if it fails(e.g. when we have whitespace or other variant formats). - // ref - https://docs.microsoft.com/en-us/dotnet/standard/datetime/system-text-json-support + // ref - https://learn.microsoft.com/dotnet/standard/datetime/system-text-json-support if(!_jsonNode.TryGetDateTimeOffset(out var value)) value = DateTimeOffset.Parse(_jsonNode.GetString()!); diff --git a/src/JsonSerializationWriter.cs b/src/JsonSerializationWriter.cs index b38c12c..e791534 100644 --- a/src/JsonSerializationWriter.cs +++ b/src/JsonSerializationWriter.cs @@ -237,7 +237,7 @@ public void WriteNullValue(string? key) /// The key of the json node /// The enumeration value #if NET5_0_OR_GREATER - public void WriteEnumValue<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]T>(string? key, T? value) where T : struct, Enum + public void WriteEnumValue<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] T>(string? key, T? value) where T : struct, Enum #else public void WriteEnumValue(string? key, T? value) where T : struct, Enum #endif @@ -246,7 +246,12 @@ public void WriteEnumValue(string? key, T? value) where T : struct, Enum if(value.HasValue) { if(typeof(T).GetCustomAttributes().Any()) - writer.WriteStringValue(Enum.GetValues(typeof(T)) + writer.WriteStringValue( +#if NET5_0_OR_GREATER + Enum.GetValues() +#else + Enum.GetValues(typeof(T)) +#endif .Cast() .Where(x => value.Value.HasFlag(x)) .Select(GetEnumName) @@ -316,7 +321,7 @@ public void WriteCollectionOfEnumValues(string? key, IEnumerable? values) public void WriteByteArrayValue(string? key, byte[]? value) { if(value != null)//empty array is meaningful - WriteStringValue(key, value.Any() ? Convert.ToBase64String(value) : string.Empty); + WriteStringValue(key, value.Length > 0 ? Convert.ToBase64String(value) : string.Empty); } /// @@ -328,7 +333,7 @@ public void WriteByteArrayValue(string? key, byte[]? value) public void WriteObjectValue(string? key, T? value, params IParsable?[] additionalValuesToMerge) where T : IParsable { var filteredAdditionalValuesToMerge = additionalValuesToMerge.OfType().ToArray(); - if(value != null || filteredAdditionalValuesToMerge.Any()) + if(value != null || filteredAdditionalValuesToMerge.Length > 0) { if(!string.IsNullOrEmpty(key)) writer.WritePropertyName(key!); if(value != null) OnBeforeObjectSerialization?.Invoke(value); @@ -452,7 +457,7 @@ public void Dispose() GC.SuppressFinalize(this); } #if NET5_0_OR_GREATER - private static string? GetEnumName<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]T>(T value) where T : struct, Enum + private static string? GetEnumName<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields)] T>(T value) where T : struct, Enum #else private static string? GetEnumName(T value) where T : struct, Enum #endif @@ -462,7 +467,7 @@ public void Dispose() if (Enum.GetName(type, value) is not { } name) throw new ArgumentException($"Invalid Enum value {value} for enum of type {type}"); - if (type.GetMember(name).FirstOrDefault()?.GetCustomAttribute() is { } attribute) + if (type.GetField(name)?.GetCustomAttribute() is { } attribute) return attribute.Value; return name.ToFirstCharacterLowerCase(); diff --git a/src/Microsoft.Kiota.Serialization.Json.csproj b/src/Microsoft.Kiota.Serialization.Json.csproj index 2e42897..761e0b1 100644 --- a/src/Microsoft.Kiota.Serialization.Json.csproj +++ b/src/Microsoft.Kiota.Serialization.Json.csproj @@ -6,7 +6,7 @@ © Microsoft Corporation. All rights reserved. Kiota JSON Serialization Library for dotnet using System.Text.Json Microsoft - netstandard2.0;netstandard2.1;net5.0; + netstandard2.0;netstandard2.1;net6.0;net7.0;net8.0; latest true http://go.microsoft.com/fwlink/?LinkID=288890 @@ -34,7 +34,7 @@ README.md $(NoWarn);NU5048;NETSDK1138 - + true