validator serialize online newtonsoft net libreria examples .net wcf json jsonschema

.net - serialize - Generar clases C#del esquema JSON



newtonsoft json linq (8)

Estoy creando un servicio web C # WCF que devuelve una gran cantidad de datos en formato JSON. El cliente es una aplicación de iPad que actualmente está siendo desarrollada por otro equipo, entonces estoy trabajando en especificaciones, sin datos de ejemplo.
Actualmente, la cadena JSON es creada por .NET Framework, mi servicio web está devolviendo un objeto C # que contiene toda la información que luego será serializada por el framework usando DataContracts.

Mi problema es que las especificaciones de comunicación solo contienen archivos de esquema JSON (basados ​​en http://json-schema.org/ ). Para facilitar el desarrollo me gustaría generar las clases correspondientes en C # pero como los archivos contienen bastante información y hay una docena de archivos, realmente no quiero crear esas clases manualmente.

Así que estoy buscando una herramienta que me permita:

  • Para generar clases C # desde un esquema JSON.
  • Para convertir un esquema JSON en un archivo XSD. Entonces sería fácil crear las clases, ya que hay muchas herramientas para generar clases desde XSD.

Encontré muchas herramientas para validar una cadena JSON contra un esquema JSON o para generar clases a partir de la cadena JSON, pero nada que parezca ayudarme.
Existe JSON.NET pero parece ser una biblioteca y no una herramienta y no encontré información sobre cómo generar clases con ella.

Entonces, si alguien conoce una herramienta o tiene una idea sobre cómo podría generar esas clases (probé una herramienta que crea las clases en Java pero no pude hacerlo funcionar).


Así que estoy buscando una herramienta que me permita: generar clases C # desde un esquema JSON ...

No lo he usado yo mismo, así que no puedo comentar mucho al respecto, pero parece que la herramienta " json-schema-to-poco " se ajustaría a lo que necesita.

Por su léame github:

Convierte archivos de esquema JSON en simples objetos CLR antiguos en C #. Útil para ejecutarse como parte de un proceso de compilación automatizado.


Aquí hay un generador de clases en línea que he usado en el pasado para generar clases C # a partir de un conjunto de muestra de datos JSON:

http://json2csharp.com/


Busque esta biblioteca en Nuget. La NJsonSchema.CodeGeneration se puede usar para generar código C # o TypeScript a partir de un esquema JSON:

var generator = new CSharpGenerator(schema); var file = generator.GenerateFile();

La variable de archivo ahora contiene el código C # para todas las clases definidas en el esquema JSON.

Necesitaba una clase generada hoy pero no pude encontrar ningún sitio que pudiera convertir el esquema de json en clases de c # en línea, así que usé la biblioteca mencionada anteriormente y escribí algo rápidamente http://json2csharp.rohitl.com/ Espero que esto ayude.


Eche un vistazo a la Ayuda de Json.NET. Hay un espacio de nombres Json.Schema que puede ser útil.

http://james.newtonking.com/projects/json/help/

Json.NET - Quick Starts & API Documentation Newtonsoft.Json.Schema Namespace Namespaces ► Newtonsoft.Json.Schema

La página del proyecto: JSON.NET



Para responder esto correctamente, necesita saber qué versión (borrador) tiene el Esquema Json.

Ejemplos de las bibliotecas que pueden manejar qué esquema (2018-01-19):

Json.NET Schema supports draft 3, draft 4, draft 6 (MIT) Manatee.Json supports draft 4, draft 6, draft 7 (MIT) NJsonSchema supports draft 4 (Ms-PL)

http://json-schema.org/implementations.html#validator-dotnet

Con NJsonSchema.CodeGeneration tampoco puede enviar el json real directamente, primero debe convertirlo a un esquema real (a menudo obtendrá el error: Unable to cast object of type ''System.String'' to type ''NJsonSchema.JsonSchema4 contrario).

Ejemplo con código en ejecución, carpeta de Schemas ubicada en la raíz del proyecto:

class Program { static void Main(string[] args) { var location = Assembly.GetExecutingAssembly().Location; var path = Path.GetFullPath(Path.Combine(location, @"../../../Schemas/")); var schemaJson = File.ReadAllText($"{path}Test.json"); var schema = JsonSchema4.FromJsonAsync(schemaJson).Result; var generator = new CSharpGenerator(schema); var generatedFile = generator.GenerateFile(); } }


Puede usar la biblioteca NJsonSchema para leer un esquema JSON o generar uno de un tipo y generar una clase C # a partir de él.

Si necesita una GUI para estas tareas, puede probar la GUI NSwagStudio desde las herramientas NSwag para hacerlo ... (también se basa en NJsonSchema)


Visual Studio 2017 tiene esta característica.

En el menú, elija Editar, Pegado especial, Pegar JSON como clases. Pegue en el JSON y Visual Studio creará las clases requeridas.