Jak automatycznie wygenerować plik klasy C # z ciągu JSON [zamknięte]

108

Biorąc pod uwagę następujący obiekt JSON,

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

co to jest narzędzie do automatycznego generowania następującej klasy 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; }
}

Przyjrzeliśmy się już tym pytaniom:

Generuj klasy C # ze schematu JSON Pyta o schematy JSON, które mogą być podejściem do wykorzystania w przyszłości.

Zalety i wady wygenerowanych klas C # dla obiektów Json

Shaun Luttin
źródło
4
json2csharp.com ???
Habib
wypróbuj to narzędzie może pomóc .. tools4geeks.com/json-to-Csharp-classes
Dheeraj Palagiri
Czy ktoś wie, jak zrobić to samo z Swagger YAML?
ryanwebjackson
Niestety json2charp.com jest teraz domeną w sprzedaży. To jest do bani, a ten quicktipe jest trochę niezgrabny. Czy ktoś zna lepszą alternatywę?
DARKGuy
@DARKGuy jsonutils jsonutils.com
Rafael

Odpowiedzi:

146

Pięć opcji:

  • Skorzystaj z bezpłatnego narzędzia internetowego jsonutils bez instalowania czegokolwiek.

  • Jeśli masz Web Essentials w programie Visual Studio, użyj opcji Edycja> Wklej specjalnie> wklej JSON jako klasę.

  • Skorzystaj z bezpłatnego jsonclassgenerator .exe

  • Narzędzie internetowe app.quicktype.io nie wymaga instalowania niczego.

  • Narzędzie internetowe json2csharp również nie wymaga instalowania niczego.

Plusy i minusy:

  • jsonclassgenerator konwertuje do PascalCase, ale inne nie.

  • app.quicktype.io ma pewną logikę do rozpoznawania słowników i obsługi właściwości JSON, których nazwy są nieprawidłowymi identyfikatorami C #.

Shaun Luttin
źródło
zarówno Web Essentials, jak i json2csharp wykonują świetną robotę. Nie próbowałem jsonclassgenerator, ponieważ otwieranie oddzielnej aplikacji tylko w tym celu wydawało się kłopotliwe
Zoran P.
1
Nie próbowałem jsonclassgenerator, ale widzę zalety. Na przykład, jeśli masz pozorowany interfejs API, możesz interakcjonować na zestawie punktów końcowych, aby ponownie wygenerować modele. Możesz posunąć się nawet do ustawienia skryptu, który sprawdza nowe zatwierdzenia i aktualizuje model, jeśli coś się zmieniło. Nie chciałbyś ręcznie wklejać nowego pliku json za każdym razem, ponieważ może to być podatne na błędy.
Billy Jake O'Connor
Narzędzie json2csharp wykonuje lepszą robotę niż VS przy formatowaniu klas, zwłaszcza nazw klas. Spowoduje to usunięcie niejednoznacznych znaków, takich jak „_”, a następnie poprawne wielkości liter w nazwach klas.
big_water,
2
„jsonutils” jest całkiem fajny, może również generować atrybuty takie jak „właściwości Json”, jsonutils.com
Dhanuka777
app.quicktype.io ten nie działa na niektórych komputerach ze względów bezpieczeństwa.
Sean Ch
121

Program Visual Studio 2012 (z zainstalowanymi ASP.NET i Web Tools 2012.2 RC) obsługuje to natywnie .

Visual Studio 2013 i nowsze wersje mają to wbudowane.

Visual Studio Wklej JSON jako zrzut ekranu klas (Zdjęcie dzięki uprzejmości: robert.muehsig )

Mrchief
źródło
4
Myślę, że to rozwiązanie jest najlepsze, ponieważ nie będziesz potrzebować zewnętrznego programu!
Abraão Caldas
przed wklejeniem tutaj jest rozwiązanie do kopiowania JSON z console.log w narzędziu programistycznym do schowka. Nadzieja pomaga.
shaijut
10

Jeśli zainstalujesz Web Essentials w Visual Studio, możesz przejść do Edit => Past special => wklej JSON jako klasę.

To prawdopodobnie najłatwiejszy z możliwych.

Web Essentials: http://vswebessentials.com/

Kenneth
źródło