Skip to content

Instantly share code, notes, and snippets.

@einarwh
Created March 20, 2026 13:56
Show Gist options
  • Select an option

  • Save einarwh/4fc579460e29286d174b6f98ec50b086 to your computer and use it in GitHub Desktop.

Select an option

Save einarwh/4fc579460e29286d174b6f98ec50b086 to your computer and use it in GitHub Desktop.
Serialization with validation.
public string Serialize(Customer customer, string schemaName, JsonSchema schema)
{
var jsonDoc = JsonSerializer.SerializeToDocument(customer, GetSerializerOptions());
var evaluation = schema.Evaluate(jsonDoc.RootElement, GetEvaluationOptions());
var assembly = Assembly.GetAssembly(typeof(JsonSchema));
var fileVersion =
assembly
.GetCustomAttribute<AssemblyFileVersionAttribute>()?
.Version;
var validatorName = $"{assembly.GetName().Name}-{fileVersion}";
var jsonObj = JsonObject.Create(jsonDoc.RootElement);
jsonObj.Add("$schema", schemaName);
var toolObj = new JsonObject();
toolObj.Add("tool", validatorName);
toolObj.Add("timestamp", DateTime.UtcNow);
toolObj.Add("result", evaluation.IsValid);
jsonObj.Add("$validation", toolObj);
return jsonObj.ToString();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment