diff --git a/src/Common/src/Common/HealthChecks/HealthCheckResult.cs b/src/Common/src/Common/HealthChecks/HealthCheckResult.cs
index 473c5e9936..8d967097e6 100644
--- a/src/Common/src/Common/HealthChecks/HealthCheckResult.cs
+++ b/src/Common/src/Common/HealthChecks/HealthCheckResult.cs
@@ -19,6 +19,7 @@ public sealed class HealthCheckResult
///
/// Used by the health middleware to determine the HTTP Status code.
///
+ [JsonPropertyName("status")]
[JsonConverter(typeof(SnakeCaseAllCapsEnumMemberJsonConverter))]
public HealthStatus Status { get; set; } = HealthStatus.Unknown;
@@ -28,11 +29,13 @@ public sealed class HealthCheckResult
///
/// Currently only used on check failures.
///
+ [JsonPropertyName("description")]
public string? Description { get; set; }
///
/// Gets details of the health check.
///
+ [JsonPropertyName("details")]
[JsonIgnoreEmptyCollection]
public IDictionary Details { get; } = new Dictionary();
}
diff --git a/src/Common/test/Certificates.Test/ConfigureCertificateOptionsTest.cs b/src/Common/test/Certificates.Test/ConfigureCertificateOptionsTest.cs
index a2a64797d2..2a93ec848b 100644
--- a/src/Common/test/Certificates.Test/ConfigureCertificateOptionsTest.cs
+++ b/src/Common/test/Certificates.Test/ConfigureCertificateOptionsTest.cs
@@ -5,7 +5,6 @@
using System.Runtime.InteropServices;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
-using System.Text.Json;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
@@ -212,19 +211,25 @@ public async Task CertificateOptions_update_on_changed_path(string certificateNa
private static string BuildAppSettingsJson(string certificateName, string certificatePath, string keyPath)
{
- string certificateBlock = $"""
- "CertificateFilePath": {JsonSerializer.Serialize(certificatePath)},
- "PrivateKeyFilePath": {JsonSerializer.Serialize(keyPath)}
- """;
-
- string namedCertificateSection = string.IsNullOrEmpty(certificateName)
- ? certificateBlock
- : $"{JsonSerializer.Serialize(certificateName)}: {{ {certificateBlock} }}";
+ string escapedCertificatePath = certificatePath.Replace(@"\", @"\\", StringComparison.Ordinal);
+ string escapedKeyPath = keyPath.Replace(@"\", @"\\", StringComparison.Ordinal);
- return $$"""
+ return string.IsNullOrEmpty(certificateName)
+ ? $$"""
+ {
+ "Certificates": {
+ "CertificateFilePath": "{{escapedCertificatePath}}",
+ "PrivateKeyFilePath": "{{escapedKeyPath}}"
+ }
+ }
+ """
+ : $$"""
{
"Certificates": {
- {{namedCertificateSection}}
+ "{{certificateName}}": {
+ "CertificateFilePath": "{{escapedCertificatePath}}",
+ "PrivateKeyFilePath": "{{escapedKeyPath}}"
+ }
}
}
""";
diff --git a/src/Discovery/src/Eureka/AppInfo/ApplicationInfo.cs b/src/Discovery/src/Eureka/AppInfo/ApplicationInfo.cs
index df11be4347..257a55202d 100644
--- a/src/Discovery/src/Eureka/AppInfo/ApplicationInfo.cs
+++ b/src/Discovery/src/Eureka/AppInfo/ApplicationInfo.cs
@@ -53,7 +53,7 @@ private List GetInstancesSnapshot()
///
public override string ToString()
{
- return JsonSerializer.Serialize(this, DebugSerializerOptions.Instance);
+ return JsonSerializer.Serialize(this, DebugJsonSerializerContext.Default.ApplicationInfo);
}
internal void Add(InstanceInfo instance)
diff --git a/src/Discovery/src/Eureka/AppInfo/ApplicationInfoCollection.cs b/src/Discovery/src/Eureka/AppInfo/ApplicationInfoCollection.cs
index 28e0fdbae6..e42f48370e 100644
--- a/src/Discovery/src/Eureka/AppInfo/ApplicationInfoCollection.cs
+++ b/src/Discovery/src/Eureka/AppInfo/ApplicationInfoCollection.cs
@@ -73,7 +73,7 @@ internal ReadOnlyCollection GetInstancesByVipAddress(string vipAdd
///
public override string ToString()
{
- return JsonSerializer.Serialize(this, DebugSerializerOptions.Instance);
+ return JsonSerializer.Serialize(this, DebugJsonSerializerContext.Default.ApplicationInfoCollection);
}
IEnumerator IEnumerable.GetEnumerator()
diff --git a/src/Discovery/src/Eureka/AppInfo/DataCenterName.cs b/src/Discovery/src/Eureka/AppInfo/DataCenterName.cs
index 5cf05013d3..ede53c628b 100644
--- a/src/Discovery/src/Eureka/AppInfo/DataCenterName.cs
+++ b/src/Discovery/src/Eureka/AppInfo/DataCenterName.cs
@@ -6,8 +6,11 @@
#pragma warning disable SA1602 // Enumeration items should be documented
#endif
+using System.Text.Json.Serialization;
+
namespace Steeltoe.Discovery.Eureka.AppInfo;
+[JsonConverter(typeof(JsonStringEnumConverter))]
public enum DataCenterName
{
Netflix,
diff --git a/src/Discovery/src/Eureka/AppInfo/InstanceInfo.cs b/src/Discovery/src/Eureka/AppInfo/InstanceInfo.cs
index d89d9e6aae..0015f8078e 100644
--- a/src/Discovery/src/Eureka/AppInfo/InstanceInfo.cs
+++ b/src/Discovery/src/Eureka/AppInfo/InstanceInfo.cs
@@ -268,7 +268,7 @@ public override int GetHashCode()
///
public override string ToString()
{
- return JsonSerializer.Serialize(this, DebugSerializerOptions.Instance);
+ return JsonSerializer.Serialize(this, DebugJsonSerializerContext.Default.InstanceInfo);
}
internal static InstanceInfo FromConfiguration(EurekaInstanceOptions options, TimeProvider timeProvider)
diff --git a/src/Discovery/src/Eureka/AppInfo/LeaseInfo.cs b/src/Discovery/src/Eureka/AppInfo/LeaseInfo.cs
index ecab87747e..2a1d76b2f1 100644
--- a/src/Discovery/src/Eureka/AppInfo/LeaseInfo.cs
+++ b/src/Discovery/src/Eureka/AppInfo/LeaseInfo.cs
@@ -48,7 +48,7 @@ private LeaseInfo()
///
public override string ToString()
{
- return JsonSerializer.Serialize(this, DebugSerializerOptions.Instance);
+ return JsonSerializer.Serialize(this, DebugJsonSerializerContext.Default.LeaseInfo);
}
internal static LeaseInfo? FromJson(JsonLeaseInfo? jsonLeaseInfo)
diff --git a/src/Discovery/src/Eureka/EurekaClient.cs b/src/Discovery/src/Eureka/EurekaClient.cs
index 47fa8b7de6..ad4b97e420 100644
--- a/src/Discovery/src/Eureka/EurekaClient.cs
+++ b/src/Discovery/src/Eureka/EurekaClient.cs
@@ -8,7 +8,6 @@
using System.Net.Http.Json;
using System.Text;
using System.Text.Json;
-using System.Text.Json.Serialization;
using Microsoft.AspNetCore.Http.Extensions;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
@@ -37,21 +36,6 @@ public sealed partial class EurekaClient
private static readonly Task