2013-04-03 2 views
20

Есть ли способ скомпрометировать схему JSON из класса C#? Что-то, что мы можем сделать вручную, используя http://www.jsonschema.net/Создание схемы JSON из класса C#

+2

вы имели в виду "программно"? –

+19

Я не хочу это исправлять. Это слишком прекрасно. – Joe

+0

У вас есть журнал: http://csharp2json.azurewebsites.net/ –

ответ

14

Вы можете использовать Json.NET для этого. Проверьте эту статью: http://sixgun.wordpress.com/2012/02/09/using-json-net-to-generate-jsonschema/

+0

Но он позволит генерировать json-схему с обязательным атрибутом, а не другими, такими как maxLength, pattern (regex для проверки электронной почты) и т. Д. Поэтому я смотрел для более общего пути. –

+2

Последняя версия Json.NET Schema поддерживает атрибуты аннотации данных. Они позволяют вам указывать maxLength, максимум, шаблон, формат и т. Д. –

+3

Какие-либо варианты некоммерческой лицензии? Хотите создать json-схему из классов C#. JSON.net является коммерческим для компаний более 10 сотрудников и не может пройти через получение лицензии на мою жестяную жестяную работу ;-) – nishant

1

Для тех, кто землю здесь от Google поиск для обратного
(генерировать C# класс от JSON) - я использую эти прекрасные инструменты онлайн:

JSON:
http://json2csharp.com/
(Источник: http://jsonclassgenerator.codeplex.com/)

XML:
http://xmltocsharp.azurewebsites.net/
(Источник: https://github.com/msyoung/XmlToCSharp)

+0

С помощью обратного инструмента jsonclassgenerator отлично. Другой простой вариант - использовать Edit-> Paste Special-> Paste JSON в качестве классов в Visual Studio. Это тоже создает класс! Иногда бывает удобно. – sandiejat

+0

@sandiejat: Приятно знать. Чудо, с какой версии VS. –

+0

Кажется, что 2012.2 RC принес его. И мы были заняты этим сложным путем! :) https://blogs.msdn.microsoft.com/webdev/2012/12/18/paste-json-as-classes-in-asp-net-and-web-tools-2012-2-rc/ – sandiejat

11

Другой вариант, который поддерживает генерации JSON Schema v4 является NJsonSchema:

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

Библиотека может быть установлена ​​с помощью NuGet.

Обновление для NJsonSchema v9.4.3 +:

using NJsonSchema; 

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

is FromType расширение? Метод не найден в версии NJsonSchema 9.4.3. Еще лучше, список пакетов.config и какие пространства имен используются. – granadaCoder

+0

Для будущих читателей. Я смог использовать дату этого сообщения, чтобы соответствовать версии пакета. Вот мой package.config. Обратите внимание, что это очень старая версия относительно всех пакетов, доступных для NJsonSchema. granadaCoder

+0

Рассмотрите возможность обновления вашего примера до последней версии пакета. Но оставляйте оба примера кода с идентификацией правильного пакета. Благодарю. – 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); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^