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



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 #.


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 )


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/

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.