Comment générer automatiquement un fichier de classe C # à partir d'une chaîne JSON [fermé]


108

Étant donné l'objet JSON suivant,

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

qu'est-ce qu'un outil pour générer automatiquement la classe C # suivante?

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; }
}

Nous avons déjà examiné ces questions:

Générer des classes C # à partir d'un schéma JSON Demande des schémas JSON, ce qui peut être une approche à utiliser ultérieurement.

Avantages et inconvénients des classes C # générées pour les objets Json



essayez cet outil pourrait vous aider .. tools4geeks.com/json-to-Csharp-classes
Dheeraj Palagiri

Quelqu'un sait comment faire la même chose avec Swagger YAML?
ryanwebjackson

Malheureusement json2charp.com est maintenant un domaine en vente. Ça craint, et le quicktipe est un peu maladroit. Quelqu'un connaît-il une meilleure alternative?
DARKGuy

@DARKGuy jsonutils jsonutils.com
Rafael

Réponses:


146

Cinq options:

  • Utilisez l' outil Web gratuit jsonutils sans rien installer.

  • Si vous avez Web Essentials dans Visual Studio, utilisez Edition> Collage spécial> coller JSON en tant que classe.

  • Utilisez le fichier jsonclassgenerator .exe gratuit

  • L'outil Web app.quicktype.io ne nécessite aucune installation.

  • L'outil Web json2csharp ne nécessite pas non plus d'installer quoi que ce soit.

Avantages et inconvénients:

  • jsonclassgenerator se convertit en PascalCase mais pas les autres.

  • app.quicktype.io a une certaine logique pour reconnaître les dictionnaires et gérer les propriétés JSON dont les noms sont des identificateurs c # non valides.


Web Essentials et json2csharp font un excellent travail. Je n'ai pas essayé jsonclassgenerator, car il semblait difficile d'ouvrir une application distincte juste pour cela
Zoran P.

1
Je n'ai pas essayé jsonclassgenerator mais je peux voir l'avantage. Par exemple, si vous aviez une API fictive, vous pourriez interagir sur un ensemble de points de terminaison pour régénérer vos modèles. Vous pouvez aller jusqu'à définir un script qui vérifie les nouveaux validations et met à jour le modèle si quelque chose a changé. Vous ne voudriez pas coller manuellement un nouveau json à chaque fois car cela pourrait être sujet à des erreurs.
Billy Jake O'Connor

L'outil json2csharp fait un travail plus agréable que VS pour formater les classes, en particulier les noms de classe. Il supprimera les caractères ambigus comme "_" et casse correctement les noms de classe par la suite.
big_water

2
"jsonutils" est plutôt cool, il peut également générer des attributs comme "Json properties", jsonutils.com
Dhanuka777

app.quicktype.io celui-ci ne fonctionne pas sur certaines machines en raison de problèmes de sécurité.
Sean Ch le

121

Visual Studio 2012 (avec ASP.NET et Web Tools 2012.2 RC installés) prend en charge cela de manière native .

Visual Studio 2013 et les versions ultérieures ont cette fonction intégrée.

Capture d'écran Visual Studio Coller JSON en tant que classes (Image courtoisie: robert.muehsig )


4
Je pense que cette solution est la meilleure, car vous n'aurez pas besoin d'un programme externe!
Abraão Caldas

avant de coller ici est la solution à copier JSON de console.log dans l' outil de développement dans le presse papier. L'espoir aide.
shaijut

10

Si vous installez Web Essentials dans Visual studio, vous pouvez accéder à Edit => Past special => coller JSON en tant que classe.

C'est probablement le plus simple qui soit.

Web Essentials: http://vswebessentials.com/

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.