VOOZH about

URL: https://www.nuget.org/packages/NJsonSchema.NewtonsoftJson/

⇱ NuGet Gallery | NJsonSchema.NewtonsoftJson 11.6.1




👁 Image
NJsonSchema.NewtonsoftJson 11.6.1

dotnet add package NJsonSchema.NewtonsoftJson --version 11.6.1
 
 
NuGet\Install-Package NJsonSchema.NewtonsoftJson -Version 11.6.1
 
 
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="NJsonSchema.NewtonsoftJson" Version="11.6.1" />
 
 
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="NJsonSchema.NewtonsoftJson" Version="11.6.1" />
 
Directory.Packages.props
<PackageReference Include="NJsonSchema.NewtonsoftJson" />
 
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add NJsonSchema.NewtonsoftJson --version 11.6.1
 
 
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: NJsonSchema.NewtonsoftJson, 11.6.1"
 
 
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package NJsonSchema.NewtonsoftJson@11.6.1
 
 
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=NJsonSchema.NewtonsoftJson&version=11.6.1
 
Install as a Cake Addin
#tool nuget:?package=NJsonSchema.NewtonsoftJson&version=11.6.1
 
Install as a Cake Tool
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

NJsonSchema for .NET

NSwag | NJsonSchema | Apimundo | Namotion.Reflection

👁 Azure DevOps
👁 Nuget
👁 Discord
👁 StackOverflow
👁 Wiki
👁 Apimundo

<img align="left" src="https://raw.githubusercontent.com/RSuter/NJsonSchema/master/assets/GitHubIcon.png">

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.

The library uses Json.NET to read and write JSON data and Namotion.Reflection for additional .NET reflection APIs.

NuGet packages:

Preview NuGet Feed: https://www.myget.org/F/njsonschema/api/v3/index.json

Features:

NJsonSchema is heavily used in NSwag, a Swagger API toolchain for .NET which generates client code for Web API services. NSwag also provides command line tools to use the NJsonSchema's JSON Schema generator (command types2swagger).

The project is developed and maintained by Rico Suter and other contributors.

Some code generators can directly be used via the Apimundo service.

NJsonSchema usage

The JsonSchema class can be used as follows:

var schema = JsonSchema.FromType<Person>();
var schemaData = schema.ToJson();
var errors = schema.Validate("{...}");

foreach (var error in errors)
 Console.WriteLine(error.Path + ": " + error.Kind);

schema = await JsonSchema.FromJsonAsync(schemaData);

The Person class:

public class Person
{
 [Required]
 public string FirstName { get; set; }

 public string MiddleName { get; set; }

 [Required]
 public string LastName { get; set; }

 public Gender Gender { get; set; }

 [Range(2, 5)]
 public int NumberWithRange { get; set; }

 public DateTime Birthday { get; set; }

 public Company Company { get; set; }

 public Collection<Car> Cars { get; set; }
}

public enum Gender
{
 Male,
 Female
}

public class Car
{
 public string Name { get; set; }

 public Company Manufacturer { get; set; }
}

public class Company
{
 public string Name { get; set; }
}

The generated JSON schema data stored in the schemaData variable:

{
 "$schema": "http://json-schema.org/draft-04/schema#",
 "title": "Person",
 "type": "object",
 "additionalProperties": false,
 "required": [
 "FirstName",
 "LastName"
 ],
 "properties": {
 "FirstName": {
 "type": "string",
 "minLength": 1
 },
 "MiddleName": {
 "type": [
 "null",
 "string"
 ]
 },
 "LastName": {
 "type": "string",
 "minLength": 1
 },
 "Gender": {
 "$ref": "#/definitions/Gender"
 },
 "NumberWithRange": {
 "type": "integer",
 "format": "int32",
 "maximum": 5.0,
 "minimum": 2.0
 },
 "Birthday": {
 "type": "string",
 "format": "date-time"
 },
 "Company": {
 "oneOf": [
 {
 "type": "null"
 },
 {
 "$ref": "#/definitions/Company"
 }
 ]
 },
 "Cars": {
 "type": [
 "array",
 "null"
 ],
 "items": {
 "$ref": "#/definitions/Car"
 }
 }
 },
 "definitions": {
 "Gender": {
 "type": "integer",
 "description": "",
 "x-enumNames": [
 "Male",
 "Female"
 ],
 "enum": [
 0,
 1
 ]
 },
 "Company": {
 "type": "object",
 "additionalProperties": false,
 "properties": {
 "Name": {
 "type": [
 "null",
 "string"
 ]
 }
 }
 },
 "Car": {
 "type": "object",
 "additionalProperties": false,
 "properties": {
 "Name": {
 "type": [
 "null",
 "string"
 ]
 },
 "Manufacturer": {
 "oneOf": [
 {
 "type": "null"
 },
 {
 "$ref": "#/definitions/Company"
 }
 ]
 }
 }
 }
 }
}

NJsonSchema.CodeGeneration usage

The NJsonSchema.CodeGeneration can be used to generate C# or TypeScript code from a JSON schema:

var generator = new CSharpGenerator(schema);
var file = generator.GenerateFile();

The file variable now contains the C# code for all the classes defined in the JSON schema.

TypeScript

The previously generated JSON Schema would generate the following TypeScript interfaces.

Settings:

new TypeScriptGeneratorSettings { TypeStyle = TypeScriptTypeStyle.Interface, TypeScriptVersion = 4.3m }

Output:

export enum Gender {
 Male = 0, 
 Female = 1, 
}

export interface Company {
 Name: string | undefined;
}

export interface Car {
 Name: string | undefined;
 Manufacturer: Company | undefined;
}

export interface Person {
 FirstName: string;
 MiddleName: string | undefined;
 LastName: string;
 Gender: Gender;
 NumberWithRange: number;
 Birthday: Date;
 Company: Company | undefined;
 Cars: Car[] | undefined;
}

... and the following TypeScript classes.

Settings:

new TypeScriptGeneratorSettings { TypeStyle = TypeScriptTypeStyle.Class, TypeScriptVersion = 4.3m }

Output:

export enum Gender {
 Male = 0, 
 Female = 1, 
}

export class Company implements ICompany {
 name: string | undefined;

 constructor(data?: ICompany) {
 if (data) {
 for (var property in data) {
 if (data.hasOwnProperty(property))
 (<any>this)[property] = (<any>data)[property];
 }
 }
 }

 init(data?: any) {
 if (data) {
 this.name = data["Name"];
 }
 }

 static fromJS(data: any): Company {
 let result = new Company();
 result.init(data);
 return result;
 }

 toJSON(data?: any) {
 data = typeof data === 'object' ? data : {};
 data["Name"] = this.name;
 return data; 
 }
}

export interface ICompany {
 name: string | undefined;
}

export class Car implements ICar {
 name: string | undefined;
 manufacturer: Company | undefined;

 constructor(data?: ICar) {
 if (data) {
 for (var property in data) {
 if (data.hasOwnProperty(property))
 (<any>this)[property] = (<any>data)[property];
 }
 }
 }

 init(data?: any) {
 if (data) {
 this.name = data["Name"];
 this.manufacturer = data["Manufacturer"] ? Company.fromJS(data["Manufacturer"]) : <any>undefined;
 }
 }

 static fromJS(data: any): Car {
 let result = new Car();
 result.init(data);
 return result;
 }

 toJSON(data?: any) {
 data = typeof data === 'object' ? data : {};
 data["Name"] = this.name;
 data["Manufacturer"] = this.manufacturer ? this.manufacturer.toJSON() : <any>undefined;
 return data; 
 }
}

export interface ICar {
 name: string | undefined;
 manufacturer: Company | undefined;
}

export class Person implements IPerson {
 firstName: string;
 middleName: string | undefined;
 lastName: string;
 gender: Gender;
 numberWithRange: number;
 birthday: Date;
 company: Company | undefined;
 cars: Car[] | undefined;

 constructor(data?: IPerson) {
 if (data) {
 for (var property in data) {
 if (data.hasOwnProperty(property))
 (<any>this)[property] = (<any>data)[property];
 }
 }
 }

 init(data?: any) {
 if (data) {
 this.firstName = data["FirstName"];
 this.middleName = data["MiddleName"];
 this.lastName = data["LastName"];
 this.gender = data["Gender"];
 this.numberWithRange = data["NumberWithRange"];
 this.birthday = data["Birthday"] ? new Date(data["Birthday"].toString()) : <any>undefined;
 this.company = data["Company"] ? Company.fromJS(data["Company"]) : <any>undefined;
 if (data["Cars"] && data["Cars"].constructor === Array) {
 this.cars = [];
 for (let item of data["Cars"])
 this.cars.push(Car.fromJS(item));
 }
 }
 }

 static fromJS(data: any): Person {
 let result = new Person();
 result.init(data);
 return result;
 }

 toJSON(data?: any) {
 data = typeof data === 'object' ? data : {};
 data["FirstName"] = this.firstName;
 data["MiddleName"] = this.middleName;
 data["LastName"] = this.lastName;
 data["Gender"] = this.gender;
 data["NumberWithRange"] = this.numberWithRange;
 data["Birthday"] = this.birthday ? this.birthday.toISOString() : <any>undefined;
 data["Company"] = this.company ? this.company.toJSON() : <any>undefined;
 if (this.cars && this.cars.constructor === Array) {
 data["Cars"] = [];
 for (let item of this.cars)
 data["Cars"].push(item.toJSON());
 }
 return data; 
 }
}

export interface IPerson {
 firstName: string;
 middleName: string | undefined;
 lastName: string;
 gender: Gender;
 numberWithRange: number;
 birthday: Date;
 company: Company | undefined;
 cars: Car[] | undefined;
}

NJsonSchema.SampleJsonSchemaGenerator usage

The NJsonSchema.SampleJsonSchemaGenerator can be used to generate a JSON Schema from sample JSON data:

JSON Schema Specification

By default, the NJsonSchema.SampleJsonSchemaGenerator generates a JSON Schema based on the JSON Schema specification. See: JSON Schema Specification

var generator = new SampleJsonSchemaGenerator(new SampleJsonSchemaGeneratorSettings());

var schema = generator.Generate("{...}");

Input:

{
 "int": 1,
 "float": 340282346638528859811704183484516925440.0,
 "str": "abc",
 "bool": true,
 "date": "2012-07-19",
 "datetime": "2012-07-19 10:11:11",
 "timespan": "10:11:11"
}

Output:

{
 "$schema": "http://json-schema.org/draft-04/schema#",
 "type": "object",
 "properties": {
 "int": {
 "type": "integer"
 },
 "float": {
 "type": "number"
 },
 "str": {
 "type": "string"
 },
 "bool": {
 "type": "boolean"
 },
 "date": {
 "type": "string",
 "format": "date"
 },
 "datetime": {
 "type": "string",
 "format": "date-time"
 },
 "timespan": {
 "type": "string",
 "format": "duration"
 }
 }
}

OpenApi Specification

To generate a JSON Schema for OpenApi, provide the SchemaType.OpenApi3 in the settings. See: OpenApi Specification

var generator = new SampleJsonSchemaGenerator(new SampleJsonSchemaGeneratorSettings { SchemaType = SchemaType.OpenApi3 });

var schema = generator.Generate("{...}");

Input:

{
 "int": 12345,
 "long": 1736347656630,
 "float": 340282346638528859811704183484516925440.0,
 "double": 340282346638528859811704183484516925440123456.0,
}

Output:

{
 "$schema": "http://json-schema.org/draft-04/schema#",
 "type": "object",
 "properties": {
 "int": {
 "type": "integer",
 "format": "int32"
 },
 "long": {
 "type": "integer",
 "format": "int64"
 },
 "float": {
 "type": "number",
 "format": "float"
 },
 "double": {
 "type": "number",
 "format": "double"
 }
 }
}

Final notes

Applications which use the library:

Product Versions Compatible and additional computed target framework versions.
.NET net5.0 net5.0 was computed.  net5.0-windows net5.0-windows was computed.  net6.0 net6.0 was computed.  net6.0-android net6.0-android was computed.  net6.0-ios net6.0-ios was computed.  net6.0-maccatalyst net6.0-maccatalyst was computed.  net6.0-macos net6.0-macos was computed.  net6.0-tvos net6.0-tvos was computed.  net6.0-windows net6.0-windows was computed.  net7.0 net7.0 was computed.  net7.0-android net7.0-android was computed.  net7.0-ios net7.0-ios was computed.  net7.0-maccatalyst net7.0-maccatalyst was computed.  net7.0-macos net7.0-macos was computed.  net7.0-tvos net7.0-tvos was computed.  net7.0-windows net7.0-windows was computed.  net8.0 net8.0 is compatible.  net8.0-android net8.0-android was computed.  net8.0-browser net8.0-browser was computed.  net8.0-ios net8.0-ios was computed.  net8.0-maccatalyst net8.0-maccatalyst was computed.  net8.0-macos net8.0-macos was computed.  net8.0-tvos net8.0-tvos was computed.  net8.0-windows net8.0-windows was computed.  net9.0 net9.0 was computed.  net9.0-android net9.0-android was computed.  net9.0-browser net9.0-browser was computed.  net9.0-ios net9.0-ios was computed.  net9.0-maccatalyst net9.0-maccatalyst was computed.  net9.0-macos net9.0-macos was computed.  net9.0-tvos net9.0-tvos was computed.  net9.0-windows net9.0-windows was computed.  net10.0 net10.0 was computed.  net10.0-android net10.0-android was computed.  net10.0-browser net10.0-browser was computed.  net10.0-ios net10.0-ios was computed.  net10.0-maccatalyst net10.0-maccatalyst was computed.  net10.0-macos net10.0-macos was computed.  net10.0-tvos net10.0-tvos was computed.  net10.0-windows net10.0-windows was computed. 
.NET Core netcoreapp2.0 netcoreapp2.0 was computed.  netcoreapp2.1 netcoreapp2.1 was computed.  netcoreapp2.2 netcoreapp2.2 was computed.  netcoreapp3.0 netcoreapp3.0 was computed.  netcoreapp3.1 netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 netstandard2.0 is compatible.  netstandard2.1 netstandard2.1 was computed. 
.NET Framework net461 net461 was computed.  net462 net462 is compatible.  net463 net463 was computed.  net47 net47 was computed.  net471 net471 was computed.  net472 net472 was computed.  net48 net48 was computed.  net481 net481 was computed. 
MonoAndroid monoandroid monoandroid was computed. 
MonoMac monomac monomac was computed. 
MonoTouch monotouch monotouch was computed. 
Tizen tizen40 tizen40 was computed.  tizen60 tizen60 was computed. 
Xamarin.iOS xamarinios xamarinios was computed. 
Xamarin.Mac xamarinmac xamarinmac was computed. 
Xamarin.TVOS xamarintvos xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (31)

Showing the top 5 NuGet packages that depend on NJsonSchema.NewtonsoftJson:

Package Downloads
NSwag.Generation

NSwag: The OpenAPI/Swagger API toolchain for .NET and TypeScript

NSwag.AspNetCore

NSwag: The OpenAPI/Swagger API toolchain for .NET and TypeScript

NSwag.Generation.AspNetCore

NSwag: The OpenAPI/Swagger API toolchain for .NET and TypeScript

Nuke.Build

The AKEless Build System for C#/.NET Signed by signpath.io from repository 'https://github.com/nuke-build/nuke' commit '8aaec258a7e00e5d98e013be025db1a42bc58d79' (see contained AppVeyorSettings.json file for build settings).

NSwag.Generation.WebApi

NSwag: The OpenAPI/Swagger API toolchain for .NET and TypeScript

GitHub repositories (8)

Showing the top 8 popular GitHub repositories that depend on NJsonSchema.NewtonsoftJson:

Repository Stars
RicoSuter/NSwag
The Swagger/OpenAPI toolchain for .NET, ASP.NET Core and TypeScript.
nuke-build/nuke
🏗 The AKEless Build System for C#/.NET
BrighterCommand/Brighter
A framework for building messaging apps with .NET and C#.
dotnet/dotnet-monitor
This repository contains the source code for .NET Monitor - a tool that allows you to gather diagnostic data from running applications using HTTP endpoints
ShokoAnime/ShokoServer
Repository for Shoko Server.
vpenades/SharpGLTF
glTF reader and writer for .NET Standard
confluentinc/confluent-kafka-dotnet
Confluent's Apache Kafka .NET client
marinasundstrom/YourBrand
Prototype enterprise system for e-commerce and consulting services
Version Downloads Last Updated
11.6.1 1,243,953 4/20/2026
11.6.0 292,688 4/8/2026
11.5.2 8,296,497 11/5/2025
11.5.1 1,379,063 9/30/2025
11.5.0 483,409 9/15/2025
11.4.0 2,110,854 7/30/2025
11.3.2 5,961,893 4/28/2025
11.3.1 40,239 4/28/2025
11.3.0 41,686 4/28/2025
11.2.0 1,830,696 3/29/2025
11.1.0 18,789,771 11/19/2024
11.0.2 14,929,102 7/17/2024
11.0.1 3,773,143 6/12/2024
11.0.0 17,042,383 1/3/2024
11.0.0-preview008 346,040 12/8/2023
11.0.0-preview007 1,520 12/8/2023
11.0.0-preview006 462,086 10/31/2023
11.0.0-preview005 404 10/30/2023
11.0.0-preview004 475 10/16/2023
11.0.0-preview003 21,301 9/26/2023
Loading failed