JSON naar C#-conversie is het proces waarbij sterk getypeerde C#-klassedefinities worden gegenereerd vanuit JSON-data. Wanneer een .NET-applicatie JSON ontvangt van een API, configuratiebestand of berichtenwachtrij, heeft ze C#-klassen nodig om die data te deserialiseren naar objecten. Die klassen met de hand schrijven is omslachtig en foutgevoelig, zeker als de JSON geneste objecten, arrays en gemengde typen bevat.
Een JSON naar C#-klassegenerator analyseert de structuur en waarden in je JSON, leidt het juiste C#-type af voor elk veld en produceert klassedefinities met property-accessors en serialisatieattributen. De uitvoer volgt de .NET-naamgevingsconventies: PascalCase-propertynamen, JsonPropertyName-attributen voor de koppeling aan de oorspronkelijke camelCase- of snake_case-JSON-sleutels, en correct gebruik van List'<'T'>' voor arrays.
Deze conversie komt vooral voor in ASP.NET Core web-API's, Azure Functions en elke .NET-service die externe JSON-data verwerkt. In plaats van dynamic of Dictionary'<'string, object'>' te gebruiken, geven getypeerde klassen je compile-time veiligheid, IntelliSense-ondersteuning en bescherming tegen typefouten in veldnamen die anders pas op runtime aan het licht komen. Plak je JSON in dit hulpmiddel en krijg direct gebruiksklare C#-klassen.
Waarom een JSON naar C#-generator gebruiken?
C#-modelklassen handmatig schrijven vanuit JSON-voorbeelden kost tijd en introduceert menselijke fouten. Een generator neemt de repetitieve delen voor zijn rekening zodat jij je kunt concentreren op de bedrijfslogica.
⚡
Directe klassegeneratie
Plak je JSON en ontvang volledige C#-klassen in minder dan een seconde. Geen handmatig typen van properties, geen vergeten velden.
🔒
Privacy-eerst verwerking
Alle conversie vindt plaats in je browser. Je JSON-data verlaat je machine nooit, zodat API-sleutels, tokens en persoonsgegevens privé blijven.
📋
Correcte attribuutkoppeling
Gegenereerde klassen bevatten JsonPropertyName-attributen die PascalCase C#-properties koppelen aan de oorspronkelijke JSON-sleutelnamen, waardoor deserialisatieproblemen worden voorkomen.
🌐
Geen account of installatie vereist
Open de pagina en plak je JSON. Geen NuGet-pakketten te installeren, geen Visual Studio-extensies te configureren, geen registratieformulieren.
Gebruiksscenario's voor JSON naar C#
Backend API-integratie
Genereer request- en responsemodellen voor externe REST API's. Plak de voorbeeld-JSON uit de API-documentatie en krijg gebruiksklare C#-klassen voor HttpClient-aanroepen.
ASP.NET Core Controllers
Maak modelklassen voor action method-parameters. Wanneer je endpoint een JSON-body accepteert, zorgt de gegenereerde klasse voor automatische modelbinding en validatie.
Azure Functions & Serverless
Bouw invoer- en uitvoerbindingen voor Azure Functions die JSON-berichten verwerken vanuit wachtrijen, event hubs of HTTP-triggers.
Configuratiedeserialisatie
Converteer appsettings.json-secties of externe configuratiebestanden naar getypeerde C#-optieklassen voor gebruik met IOptions'<'T'>' in dependency injection.
Database seeding & migratie
Zet JSON-fixturebestanden om naar C#-objecten voor Entity Framework-seeddata, integratietestopstellingen of datamigratiebestanden.
C#-typesystemen leren
Studenten en ontwikkelaars die nieuw zijn in .NET kunnen zien hoe JSON-typen worden vertaald naar C#-typen, property-accessors begrijpen en via voorbeelden leren over serialisatieattributen.
JSON naar C#-typemapping referentie
Elk JSON-waardetype wordt gekoppeld aan een specifiek C#-type. De generator analyseert de werkelijke waarden om het meest precieze type te kiezen. Zo wordt een JSON-getal zonder decimaalpunt een int, terwijl 3.14 een double wordt. Null-waarden produceren object? (nullable referentietype) omdat het werkelijke type niet kan worden afgeleid uit null alleen.
JSON-type
Voorbeeld
C#-type
string
"hello"
string
number (int)
42
int
number (float)
3.14
double
boolean
true, false
bool
null
null
object?
object
{"key": "value"}
nested class
array
[1, 2, 3]
List<int>
array of objects
[{"id": 1}]
List<ClassName>
System.Text.Json vs Newtonsoft.Json
.NET heeft twee belangrijke JSON-serialisatiebibliotheken. De gegenereerde klassen van dit hulpmiddel gebruiken System.Text.Json-attributen (JsonPropertyName), de ingebouwde optie sinds .NET Core 3.0. Als je project Newtonsoft.Json gebruikt, kun je de attributen vervangen.
System.Text.Json
Ingebouwd in .NET sinds Core 3.0. Sneller en lager geheugengebruik dan Newtonsoft. Gebruikt [JsonPropertyName] voor propertykoppeling. De standaardkeuze voor nieuwe .NET 6+-projecten. Ondersteunt niet alle Newtonsoft-functies zoals JsonPath of referentieverwerking out of the box.
Newtonsoft.Json
De originele .NET JSON-bibliotheek (Json.NET). Gebruikt [JsonProperty] voor propertykoppeling. Ondersteunt geavanceerdere scenario's: polymorfe serialisatie, JsonPath-queries en aangepaste converters met meer flexibiliteit. Nog steeds gangbaar in oudere codebases en projecten die functies nodig hebben die System.Text.Json mist.
Codevoorbeelden
Deze voorbeelden laten zien hoe C#-klassen gegenereerd vanuit JSON worden gedefinieerd en gebruikt, met beide belangrijke serialisatiebibliotheken, plus hoe generatie via de opdrachtregel kan worden geautomatiseerd.
C# (System.Text.Json)
using System.Text.Json;
var json = """{"id": 1, "name": "Alice", "active": true}""";
var user = JsonSerializer.Deserialize<User>(json);
Console.WriteLine(user.Name); // → "Alice"
public class User
{
[JsonPropertyName("id")]
public int Id { get; set; }
[JsonPropertyName("name")]
public string Name { get; set; }
[JsonPropertyName("active")]
public bool Active { get; set; }
}
C# (Newtonsoft.Json)
using Newtonsoft.Json;
var json = @"{""id"": 1, ""name"": ""Alice"", ""scores"": [98, 85]}";
var user = JsonConvert.DeserializeObject<User>(json);
Console.WriteLine(user.Scores[0]); // → 98
public class User
{
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("scores")]
public List<int> Scores { get; set; }
}
JavaScript (quicktype)
// Install: npm install -g quicktype
// Generate C# classes from JSON:
// quicktype --lang csharp --src data.json --out Models.cs
// From stdin:
// echo '{"id": 1, "name": "Alice"}' | quicktype --lang csharp
// Output:
// public class Root
// {
// [JsonPropertyName("id")]
// public int Id { get; set; }
//
// [JsonPropertyName("name")]
// public string Name { get; set; }
// }
Wat is het verschil tussen JsonPropertyName en JsonProperty?
JsonPropertyName is het attribuut van System.Text.Json, de ingebouwde .NET-serializer. JsonProperty is van Newtonsoft.Json (Json.NET), een bibliotheek van derden. Beide koppelen een C#-propertynaam aan een JSON-veldnaam, maar ze horen bij verschillende namespaces en zijn niet uitwisselbaar. Gebruik JsonPropertyName voor nieuwe .NET 6+-projecten en JsonProperty als je project al afhankelijk is van Newtonsoft.
Hoe verwerkt de generator geneste JSON-objecten?
Elk genest object wordt een eigen C#-klasse. De property in de bovenliggende klasse gebruikt de geneste klasse als zijn type. Als je JSON bijvoorbeeld een "address"-veld bevat met een object met "street" en "city", maakt de generator een Address-klasse en typeert de property als Address in de bovenliggende klasse.
Wat gebeurt er met JSON-arrays die gemengde typen bevatten?
De generator leidt het array-elementtype af van het eerste niet-null-element. Als de array gemengde typen bevat (strings en getallen samen), valt het gegenereerde type terug op List'<'object'>'. In de praktijk mengen goed gestructureerde API-responses zelden typen binnen één array.
Kan ik de gegenereerde klassen gebruiken met Entity Framework?
Ja, maar je moet EF-specifieke annotaties toevoegen zoals [Key]-, [Required]- of [Column]-attributen. De gegenereerde klassen geven je de propertystructuur; beschouw ze als een scaffold en voeg EF-configuratie bovenop toe. EF verwacht ook een parameterloze constructor, die de gegenereerde klassen standaard al hebben.
Hoe worden null-waarden in JSON omgezet naar C#?
Een JSON null-waarde produceert het type object? omdat de generator het bedoelde type niet kan bepalen uit null alleen. Na de generatie moet je object? vervangen door het juiste nullable type (string?, int? of een specifieke klasse?) op basis van je kennis van het API-schema.
Wordt camelCase JSON automatisch gekoppeld aan PascalCase C#-properties?
Ja. De generator converteert JSON-sleutels zoals "firstName" naar PascalCase-properties zoals FirstName en voegt een [JsonPropertyName("firstName")]-attribuut toe. Dit zorgt ervoor dat de serializer automatisch tussen de twee naamgevingsconventies koppelt tijdens serialisatie en deserialisatie.
Hoe ga ik om met JSON met optionele velden in C#?
Maak het propertytype nullable (bijv. string? of int?) en stel een standaardwaarde in. Met System.Text.Json kun je ook JsonSerializerOptions.DefaultIgnoreCondition configureren om null-waarden over te slaan tijdens serialisatie. De generator produceert standaard niet-nullable typen, dus controleer en pas de nullability aan op basis van je API-contract.