2013-04-03 8 views

risposta

14

È possibile utilizzare Json.NET per questo. Dai un'occhiata a questo articolo: http://sixgun.wordpress.com/2012/02/09/using-json-net-to-generate-jsonschema/

+0

Ma consentirà solo di generare schema json con l'attributo richiesto e non altri come maxLength, pattern (regex per convalidare email), ecc. Quindi stavo cercando per un altro modo più generico. –

+2

L'ultima versione di Json.NET Schema supporta gli attributi di annotazione dei dati. Ti permettono di specificare maxLength, maximum, pattern, format, ecc. –

+3

Eventuali opzioni di licenza non commerciale in circolazione? Vuoi generare schema json dalle classi C#. JSON.net è commerciale per le aziende con più di 10 dipendenti e non può sopportare il fastidio di ottenere una licenza per il mio lavoro metallico ;-) – nishant

1

Per coloro che sbarcano qui da google a cercare la retromarcia
(generare la classe C# da JSON) - io uso quelle belle strumenti online:

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

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

+0

Da inverso, lo strumento jsonclassgenerator è ottimo. Un'altra opzione semplice è utilizzare Modifica-> Incolla speciale-> Incolla JSON come classi in Visual Studio. Questo crea anche una classe! Piuttosto a portata di mano a volte. – sandiejat

+0

@sandiejat: bello sapere. Mi chiedo da che versione di VS. –

+0

Sembra che 2012.2 RC l'abbia portato. E noi eravamo impegnati a farlo in modo difficile! :) https://blogs.msdn.microsoft.com/webdev/2012/12/18/paste-json-as-classes-in-asp-net-and-web-tools-2012-2-rc/ – sandiejat

11

Un'altra opzione che supporta la generazione di JSON Schema v4 è NJsonSchema:

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

La libreria può essere installato tramite NuGet.

Aggiornamento per NJsonSchema v9.4.3 +:

using NJsonSchema; 

var schema = await JsonSchema4.FromTypeAsync<Person>(); 
var schemaJson = schema.ToJson(); 
+0

è FromType un'estensione? Metodo non trovato nella versione NJsonSchema 9.4.3. Meglio ancora, un elenco packages.config e quali spazi dei nomi sono usati sarebbe molto apprezzato. – granadaCoder

+0

Per i futuri lettori. Sono stato in grado di utilizzare la data di questo post per abbinarla a una versione del pacchetto. Ecco i miei pacchetti.config. Nota, questa è una versione molto vecchia rispetto a tutti i pacchetti disponibili per NJsonSchema. granadaCoder

+0

Considerare l'aggiornamento del proprio esempio all'ultima versione del pacchetto. Lasciare entrambi i campioni di codice con l'identificazione del pacchetto corretto. Grazie. – granadaCoder

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