Yesterday I shared how to create your C# data contracts from an available JSON schema. In that post I demonstrated Quicktype as a way to generate those contracts.
There was only one disadvantage when using Quicktype; it only supports Newtonsoft.Json. Today I want to have a look at an alternative that does have support for System.Text.Json.
Introducing NJsonSchema
After looking around on Github I found NJsonSchema for .NET:
NJsonSchema is a .NET library to read, generate and validate JSON Schema draft v4+ schemas. The library can read a schema from a file or string and validate JSON data against it. A schema can also be generated from an existing .NET class. With the code generation APIs you can generate C# and TypeScript classes or interfaces from a schema.
It offers multiple features:
- Read existing JSON Schemas and validate JSON data
- Generate JSON Schema from an existing .NET type
- Generate JSON Schema from sample JSON data
- Generate C# and TypeScript code from JSON Schema (That’s the one we are looking for!)
Generate C# data contracts using NJsonSchema
We can use the NJsonSchema for .NET online on Apimundo.com:
Paste our JsonSchema:
Update the C# Generator Settings to use System.Text.Json
. Therefore change the JsonLibrary
property to SystemTextJson:
And click on Generate Code to generate our data contracts:
You can also write the generation logic yourself.
Therefore create a console application and add the following NuGet reference.
dotnet add NJsonSchema.CodeGeneration.CSharp
Add the following code:
Run the project to generate the data contracts and write them to a file.