Есть ли способ скомпрометировать схему JSON из класса C#? Что-то, что мы можем сделать вручную, используя http://www.jsonschema.net/Создание схемы JSON из класса C#
ответ
Вы можете использовать Json.NET для этого. Проверьте эту статью: http://sixgun.wordpress.com/2012/02/09/using-json-net-to-generate-jsonschema/
Но он позволит генерировать json-схему с обязательным атрибутом, а не другими, такими как maxLength, pattern (regex для проверки электронной почты) и т. Д. Поэтому я смотрел для более общего пути. –
Последняя версия Json.NET Schema поддерживает атрибуты аннотации данных. Они позволяют вам указывать maxLength, максимум, шаблон, формат и т. Д. –
Какие-либо варианты некоммерческой лицензии? Хотите создать json-схему из классов C#. JSON.net является коммерческим для компаний более 10 сотрудников и не может пройти через получение лицензии на мою жестяную жестяную работу ;-) – nishant
Для тех, кто землю здесь от Google поиск для обратного
(генерировать C# класс от JSON) - я использую эти прекрасные инструменты онлайн:
JSON:
http://json2csharp.com/
(Источник: http://jsonclassgenerator.codeplex.com/)
XML:
http://xmltocsharp.azurewebsites.net/
(Источник: https://github.com/msyoung/XmlToCSharp)
С помощью обратного инструмента jsonclassgenerator отлично. Другой простой вариант - использовать Edit-> Paste Special-> Paste JSON в качестве классов в Visual Studio. Это тоже создает класс! Иногда бывает удобно. – sandiejat
@sandiejat: Приятно знать. Чудо, с какой версии VS. –
Кажется, что 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
Другой вариант, который поддерживает генерации 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();
is FromType расширение? Метод не найден в версии NJsonSchema 9.4.3. Еще лучше, список пакетов.config и какие пространства имен используются. – granadaCoder
Для будущих читателей. Я смог использовать дату этого сообщения, чтобы соответствовать версии пакета. Вот мой package.config. Обратите внимание, что это очень старая версия относительно всех пакетов, доступных для NJsonSchema. xml version = "1.0" encoding = "utf-8"?>
Рассмотрите возможность обновления вашего примера до последней версии пакета. Но оставляйте оба примера кода с идентификацией правильного пакета. Благодарю. – granadaCoder
JsonSchemaGenerator js = new JsonSchemaGenerator();
var schema = js.Generate(typeof(Person));
schema.Title = typeof(Person).Name;
using (StreamWriter fileWriter = File.CreateText(filePath))
{
fileWriter.WriteLine(schema);
}
вы имели в виду "программно"? –
Я не хочу это исправлять. Это слишком прекрасно. – Joe
У вас есть журнал: http://csharp2json.azurewebsites.net/ –