Efficienter programmeren door middel van het gebruik van externe tools header image

Efficienter programmeren door middel van het gebruik van externe tools

donderdag 2 april 2020 ·Leestijd: 7 minuten
contacteer auteur:

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

De kracht van personalisatie in B2B Leadgeneratie
De kracht van personalisatie in B2B Leadgeneratie

03 november 2023

Hoe u uw B2B klanten kunt nurturen en uw verkoop kunt stimuleren
Hoe u uw B2B klanten kunt nurturen en uw verkoop kunt stimuleren

20 oktober 2023

Creëer synergie tussen B2B SEA en B2B SEO
Creëer synergie tussen B2B SEA en B2B SEO

11 oktober 2023

Open Nieuwsbrief Inschrijving Footer