Сгенерировать классы С# из схемы JSON
Я создаю веб-службу С# WCF, которая возвращает много данных в формате JSON.
Клиент - это приложение для iPad, которое в настоящее время разрабатывается другой командой. Поэтому я работаю над спецификациями, без данных примера.
В настоящее время строка JSON создается инфраструктурой .net, моя веб-служба возвращает объект С#, содержащий всю информацию, которая затем сериализуется каркасом с использованием DataContracts.
Моя проблема в том, что спецификации связи содержат только файлы JSON Schema (на основе http://json-schema.org/). Чтобы облегчить разработку, я хотел бы сгенерировать соответствующие классы в С#, но поскольку файлы содержат довольно много информации, и есть десяток файлов, я действительно не хочу создавать эти классы вручную.
Итак, я ищу инструмент, который позволил бы мне:
- Чтобы сгенерировать классы С# из схемы JSON.
- Преобразование схемы JSON в файл XSD. Тогда было бы легко создать классы, так как есть много инструментов для генерации классов из XSD.
Я нашел много инструментов для проверки строки JSON против схемы JSON или для создания классов из строки JSON, но ничего, что мне кажется, не помогает.
Существует JSON.NET, но, похоже, это библиотека, а не инструмент, и я не нашел никакой информации о создании классов с ней.
Итак, если кто-нибудь знает инструменты или имеет представление о том, как я могу сгенерировать эти классы (я попробовал инструмент, который создавал классы на Java, но я не мог заставить его работать).
Ответы
Ответ 1
Посмотрите эту библиотеку на nuget. NJsonSchema.CodeGeneration можно использовать для генерации кода С# или TypeScript из схемы JSON:
var generator = new CSharpGenerator(schema);
var file = generator.GenerateFile();
Теперь переменная файла содержит код С# для всех классов, определенных в схеме JSON.
Мне нужен класс, сгенерированный сегодня, но не смог найти какой-либо сайт, который мог бы конвертировать json-схему в классы С# онлайн, поэтому использовал вышеупомянутую библиотеку и быстро написал что-то быстро http://json2csharp.rohitl.com/ надеюсь, что это поможет.
Ответ 2
Вы можете использовать библиотеку NJsonSchema, чтобы прочитать схему JSON или сгенерировать ее из типа и сгенерировать из нее класс С#.
Если вам нужен графический интерфейс для этих задач, вы можете попробовать графический интерфейс NSwagStudio из NSwag инструментов для этого... ( он также основан на NJsonSchema)
Ответ 3
Итак, я ищу инструмент, который позволил бы мне: Чтобы сгенерировать классы С# из схемы JSON...
Я не использовал его сам, поэтому я не могу слишком много комментировать об этом, но он выглядит как инструмент json-schema-to-poco" подходит для того, что вам нужно.
За его github readme:
Преобразует файлы схемы JSON в простые старые объекты CLR в С#. Полезно для работы как часть процесса автоматической сборки.
Ответ 4
У меня была потребность в этом сегодня, и я не видел твердых ответов на ваш вопрос, поэтому я взбесил это. Это не идеально, но это хорошая отправная точка для создания.
https://gist.github.com/rushfrisby/c8f58f346548bf31e045
Ответ 5
Посмотрите на Справка Json.NET
Существует пространство имен Json.Schema, которое может быть полезно.
http://james.newtonking.com/projects/json/help/
Json.NET - Краткое руководство и документация по API
Пространство имен Newtonsoft.Json.Schema
Пространства имен ► Newtonsoft.Json.Schema
Страница проекта: http://json.codeplex.com/
Ответ 6
Вот генератор онлайн-классов, который я использовал в прошлом, чтобы генерировать классы С# из набора образцов данных JSON:
http://json2csharp.com/