Cómo generar automáticamente un archivo de clase C # a partir de una cadena JSON [cerrado]

108

Dado el siguiente objeto JSON,

form = {
  "name": "",
  "address": {
    "street": "",
    "city": "",
    "province": "",
    "postalCode": "",
    "country": ""
  },
  "phoneDay": "",
  "phoneCell": "",
  "businessName": "",
  "website": "",
  "email": ""
}

¿Qué es una herramienta para generar automáticamente la siguiente clase C #?

public class ContactInfo
{
    public string Name { get; set; }
    public Address Address { get; set; }
    public string PhoneDay { get; set; }
    public string PhoneCell { get; set; }
    public string BusinessName { get; set; }
    public string Website { get; set; }
    public string Email { get; set; }
}

public class Address
{
    public string Street { get; set; }
    public string City { get; set; }
    public string Province { get; set; }
    public string PostalCode { get; set; }
    public string Country { get; set; }
}

Ya hemos analizado estas preguntas:

Generar clases C # a partir de JSON Schema es preguntar sobre JSON Schemas, que puede ser un enfoque para usar en el futuro.

Beneficios e inconvenientes de las clases C # generadas para objetos Json

Shaun Luttin
fuente
4
json2csharp.com ???
Habib
probar esta herramienta podría ayudar .. tools4geeks.com/json-to-Csharp-classes
Dheeraj Palagiri
¿Alguien sabe cómo hacer lo mismo con Swagger YAML?
ryanwebjackson
Desafortunadamente, json2charp.com ahora es un dominio a la venta. Eso apesta, y el de tipeo rápido es un poco torpe. ¿Alguien conoce una alternativa mejor?
DARKGuy
@DARKGuy jsonutils jsonutils.com
Rafael

Respuestas:

146

Cinco opciones:

Pros y contras:

  • jsonclassgenerator se convierte a PascalCase pero los demás no.

  • app.quicktype.io tiene cierta lógica para reconocer diccionarios y manejar propiedades JSON cuyos nombres son identificadores de C # inválidos.

Shaun Luttin
fuente
tanto Web Essentials como json2csharp están haciendo un gran trabajo. No probé jsonclassgenerator, porque parecía una molestia tener que abrir una aplicación separada solo para eso
Zoran P.
1
No he probado jsonclassgenerator pero puedo ver la ventaja. Por ejemplo, si tuvieras una API simulada, podrías interactuar con un conjunto de puntos finales para regenerar tus modelos. Podrías ir tan lejos como para configurar un script que busque nuevas confirmaciones y actualice el modelo si algo ha cambiado. No querrá pegar manualmente un nuevo json cada vez, ya que esto podría ser propenso a errores.
Billy Jake O'Connor
La herramienta json2csharp hace un mejor trabajo que VS al formatear las clases, especialmente los nombres de las clases. Eliminará caracteres ambiguos como "_" y, a partir de entonces, los nombres de las clases se colocarán correctamente.
big_water
2
"jsonutils" es bastante bueno, también puede generar atributos como "propiedades Json", jsonutils.com
Dhanuka777
app.quicktype.io éste no funciona en algunas máquinas debido a problemas de seguridad.
Sean Ch
121

Visual Studio 2012 (con ASP.NET y Web Tools 2012.2 RC instalados) admite esto de forma nativa .

Visual Studio 2013 en adelante tiene esta función.

Captura de pantalla de Visual Studio Paste JSON as Classes (Imagen cortesía: robert.muehsig )

Mrchief
fuente
4
Creo que esta solución es la mejor, ¡porque no necesitará un programa externo!
Abraão Caldas
antes de pegar aquí hay una solución para copiar JSON de console.log en la herramienta de desarrollo al portapapeles. La esperanza ayuda.
shaijut
10

Si instala Web Essentials en Visual Studio, puede ir a Editar => Pasado especial => pegar JSON como clase.

Probablemente sea el más fácil que existe.

Web Essentials: http://vswebessentials.com/

Kenneth
fuente