Come generare automaticamente un file di classe C # da una stringa JSON [chiuso]


108

Dato il seguente oggetto JSON,

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

che cos'è uno strumento per generare automaticamente la seguente classe 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; }
}

Abbiamo già esaminato queste domande:

Genera classi C # dallo schema JSON Chiede degli schemi JSON che potrebbero essere un approccio da utilizzare in futuro.

Vantaggi e svantaggi delle classi C # generate per gli oggetti Json



provare questo strumento potrebbe aiutare .. tools4geeks.com/json-to-Csharp-classes
Dheeraj Palagiri

Qualcuno sa come fare la stessa cosa con Swagger YAML?
ryanwebjackson

Purtroppo json2charp.com è ora un dominio in vendita. Fa schifo, e quello rapido è piuttosto goffo. Qualcuno conosce un'alternativa migliore?
DARKGuy

@DARKGuy jsonutils jsonutils.com
Rafael

Risposte:


146

Cinque opzioni:

  • Usa lo strumento web gratuito jsonutils senza installare nulla.

  • Se hai Web Essentials in Visual Studio, usa Modifica> Incolla speciale> incolla JSON come classe.

  • Usa il jsonclassgenerator .exe gratuito

  • Lo strumento web app.quicktype.io non richiede l'installazione di nulla.

  • Anche lo strumento web json2csharp non richiede l'installazione di nulla.

Pro e contro:

  • jsonclassgenerator converte in PascalCase ma gli altri no.

  • app.quicktype.io ha una logica per riconoscere i dizionari e gestire le proprietà JSON i cui nomi sono identificatori c # non validi.


sia Web Essentials che json2csharp stanno facendo un ottimo lavoro. Non ho provato jsonclassgenerator, perché sembrava una seccatura dover aprire un'app separata solo per questo
Zoran P.

1
Non ho provato jsonclassgenerator ma posso vedere il vantaggio. Ad esempio, se avessi una finta API, potresti interagire su un insieme di endpoint per rigenerare i tuoi modelli. Potresti arrivare fino all'impostazione di uno script che controlla i nuovi commit e aggiorna il modello se qualcosa è cambiato. Non dovresti incollare manualmente un nuovo json ogni volta in quanto potrebbe essere soggetto a errori.
Billy Jake O'Connor

Lo strumento json2csharp fa un lavoro migliore rispetto a VS di formattazione delle classi, in particolare i nomi delle classi. Rimuoverà i caratteri ambigui come "_" e in seguito correttamente i nomi delle classi.
big_water

2
"jsonutils" è piuttosto interessante, può generare attributi come "proprietà Json", jsonutils.com
Dhanuka777

app.quicktype.io questo non funziona su alcune macchine a causa di problemi di sicurezza.
Sean Ch,

121

Visual Studio 2012 (con ASP.NET e Web Tools 2012.2 RC installati) lo supporta in modo nativo .

Visual Studio 2013 in poi ha questo built-in.

Visual Studio Incolla JSON come screenshot delle classi (Immagine cortesia: robert.muehsig )


4
Penso che questa soluzione sia la migliore, perché non avrai bisogno di un programma esterno!
Abraão Caldas

prima di incollare qui è soluzione per copiare JSON da console.log nello strumento per sviluppatori negli appunti. La speranza aiuta.
shaijut

10

Se installi Web Essentials in Visual Studio puoi andare su Modifica => Past special => incolla JSON come classe.

Questo è probabilmente il più semplice che ci sia.

Web Essentials: http://vswebessentials.com/

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.