Efficienter programmeren door middel van het gebruik van externe tools

Geschreven door: op donderdag 2 april 2020

Leestijd:

Iedere programmeur zal er bekend mee zijn: Wanneer je bezig bent met het schrijven van een koppeling, laten we zeggen een integratie met je CRM, zul je bepaalde data moeten updaten. In ons geval werken we met een stuk JSON welke we willen doorsturen naar ons CRM. We kunnen hier natuurlijk een stuk JSON voor gaan vullen en deze doorsturen, maar het is niet alleen een fraaiere oplossing wanneer we dit automatisch genereren op basis van een klasse, maar ook nog een sneller, want we hoeven niet met de hand een complete klasse te schrijven. Dit is mogelijk via Quicktype. QuickType stelt ons in staat een stuk JSON in te geven, en er een klasse uit te krijgen in een reeks van programmeertalen.

Gemakkelijk JSON omzetten naar C#

We gebruiken onderstaand voorbeeld:

{
  "Organisatie": {
    "Sub1": {
      "Velden": {
        "Vergelijking": "4",
        "Nr": "12345",
        "Nm": "Sigma Solutions B.V.",
        "Type": "30",
        "kvK": "123456789",
        "EmAd": "info@sigmasolutions.nl",
        "HoPa": "https://sigmasolutions.nl",
        "EmAm": "05"
      },
      "Sub2": {
        "Adres": {
          "Element": {
            "Fields": {
              "Land": "NL",
              "Ad": "Wilhelminalaan",
              "HmNr": 1,
              "ZpCd": "1815JC",
              "Rs": "Alkmaar"
            }
          }
        },
        "Contact": {
          "Element": {
            "Velden": {
              "Type": "PRS",
              "Linkedin": "linkedin.com/in/armanddewaard"
            }
          }
        }
      }
    }
  }
}

Wanneer we bovenstaande JSON omzetten naar C#, krijgen we daar onderstaande klasse uit. Hierin worden niet alleen de verschillende subklassen en attributen aangemaakt, maar wordt tevens aangegeven met welke individueel attribuut in de JSON (JsonProperty) het C#-attribuut overeenkomt. Dit houdt in dat je in C# je attribuut kunt hernoemen, zonder dat je JSON-omzetting kapot gaat.

Door deze tool te gebruiken, ben je dus niet alleen efficiënter, maar verklein je ook nog eens je foutmarge. Het genereren van complexe klassen is namelijk geautomatiseerd, waardoor de kans op fouten minder wordt.

public partial class QuickTypeTest
    {
        [JsonProperty("Organisatie")]
        public Organisatie Organisatie { get; set; }
    }

    public partial class Organisatie
    {
        [JsonProperty("Sub1")]
        public Sub1 Sub1 { get; set; }
    }

    public partial class Sub1
    {
        [JsonProperty("Velden")]
        public Sub1Velden Velden { get; set; }

        [JsonProperty("Sub2")]
        public Sub2 Sub2 { get; set; }
    }

    public partial class Sub2
    {
        [JsonProperty("Adres")]
        public Adres Adres { get; set; }

        [JsonProperty("Contact")]
        public Contact Contact { get; set; }
    }

    public partial class Adres
    {
        [JsonProperty("Element")]
        public AdresElement Element { get; set; }
    }

    public partial class AdresElement
    {
        [JsonProperty("Fields")]
        public Fields Fields { get; set; }
    }

    public partial class Fields
    {
        [JsonProperty("Land")]
        public string Land { get; set; }

        [JsonProperty("Ad")]
        public string Ad { get; set; }

        [JsonProperty("HmNr")]
        public long HmNr { get; set; }

        [JsonProperty("ZpCd")]
        public string ZpCd { get; set; }

        [JsonProperty("Rs")]
        public string Rs { get; set; }
    }

    public partial class Contact
    {
        [JsonProperty("Element")]
        public ContactElement Element { get; set; }
    }

    public partial class ContactElement
    {
        [JsonProperty("Velden")]
        public ElementVelden Velden { get; set; }
    }

    public partial class ElementVelden
    {
        [JsonProperty("Type")]
        public string Type { get; set; }

        [JsonProperty("Linkedin")]
        public string Linkedin { get; set; }
    }

    public partial class Sub1Velden
    {
        [JsonProperty("Vergelijking")]
        [JsonConverter(typeof(ParseStringConverter))]
        public long Vergelijking { get; set; }

        [JsonProperty("Nr")]
        [JsonConverter(typeof(ParseStringConverter))]
        public long Nr { get; set; }

        [JsonProperty("Nm")]
        public string Nm { get; set; }

        [JsonProperty("Type")]
        [JsonConverter(typeof(ParseStringConverter))]
        public long Type { get; set; }

        [JsonProperty("kvK")]
        [JsonConverter(typeof(ParseStringConverter))]
        public long KvK { get; set; }

        [JsonProperty("EmAd")]
        public string EmAd { get; set; }

        [JsonProperty("HoPa")]
        public Uri HoPa { get; set; }

        [JsonProperty("EmAm")]
        public string EmAm { get; set; }
    }

 


Andere blogartikelen

Bel 072 5345 888
Meer dan 40 bedrijven vertrouwen op ons
Onze Middelen en Technologieën
microsoft silver partner
Adobe partner
fd-gazellen-2018.jpg
Google analytics
partners-logo.jpg
Op de hoogte blijven?

Meld u aan voor de gratis nieuwsbrief om op de hoogte te blijven van onze activiteiten