Ravi Gupta
Ravi Gupta

Reputation: 6480

Generating JSON schema from C# class

Is there any way to programmatically generate a JSON schema from a C# class?

Something which we can do manually using http://www.jsonschema.net/

Upvotes: 54

Views: 68824

Answers (4)

mark.monteiro
mark.monteiro

Reputation: 2941

This is supported in Json.NET via the Newtonsoft.Json.Schema NuGet package. Instructions on how to use it can be found in the official documentation, but I've also included a simple example below.

JSchemaGenerator generator = new JSchemaGenerator();
JSchema schema = generator.Generate(typeof(Person));
Console.WriteLine(schema.ToString());
//{
//  "type": "object",
//  "properties": {
//    "Name": {
//      "type": [ "string", "null" ]
//    },
//    "Age": { "type": "integer" }
//  },
//  "required": [ "Name", "Age" ]
//}

Upvotes: 9

Rico Suter
Rico Suter

Reputation: 11868

Another option which supports generating JSON Schema v4 is NJsonSchema:

var schema = JsonSchema.FromType<Person>();
var schemaJson = schema.ToJson();

The library can be installed via NuGet.

Update for NJsonSchema v9.4.3+:

using NJsonSchema;

var schema = await JsonSchema.FromTypeAsync<Person>();
var schemaJson = schema.ToJson();

Upvotes: 46

Daniel
Daniel

Reputation: 1012

JsonSchemaGenerator js = new JsonSchemaGenerator();
var schema = js.Generate(typeof(Person));
schema.Title = typeof(Person).Name;
using (StreamWriter fileWriter = File.CreateText(filePath))
{
      fileWriter.WriteLine(schema);
}

Upvotes: 1

Stefan Steiger
Stefan Steiger

Reputation: 82366

For those who land here from google searching for the reverse
(generate the C# class from JSON) - I use those fine online tools:

JSON:
http://json2csharp.com/
(Source: http://jsonclassgenerator.codeplex.com/)

XML:
http://xmltocsharp.azurewebsites.net/
(Source: https://github.com/msyoung/XmlToCSharp)

Upvotes: 1

Related Questions