<PackageReference Include="NJsonSchema" Version="9.10.16" />

JsonReferenceConverter

Regenerates reference paths and correctly generates $ref properties.
using Newtonsoft.Json; using System; namespace NJsonSchema.Converters { public class JsonReferenceConverter : JsonConverter { [ThreadStatic] private static bool _isWriting; public override bool CanWrite => _isWriting; public override bool CanConvert(Type objectType) { return true; } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { return serializer.Deserialize(reader, objectType); } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { JsonSchemaReferenceUtilities.UpdateSchemaReferencePaths(value, false); try { _isWriting = true; string data = JsonConvert.SerializeObject(value, serializer.Formatting); writer.WriteRaw(JsonSchemaReferenceUtilities.ConvertPropertyReferences(data)); } finally { _isWriting = false; } } } }