JSON till C#-konvertering innebär att man genererar starkt typade C#-klassdefinitioner från JSON-data. När en .NET-applikation tar emot JSON från ett API, en konfigurationsfil eller en meddelandekö behöver den C#-klasser för att deserialisera den datan till objekt. Att skriva dessa klasser för hand är tidskrävande och felbenäget, särskilt när JSON innehåller nästlade objekt, arrayer och blandade typer.
En JSON till C#-klassgenerator analyserar strukturen och värdena i din JSON, härleder lämplig C#-typ för varje fält och producerar klassdefinitioner med egenskapsaccessorer och serialiseringsattribut. Utdata följer .NET:s namnkonventioner: PascalCase-egenskapsnamn, JsonPropertyName-attribut för mappning till de ursprungliga camelCase- eller snake_case-JSON-nycklarna samt korrekt användning av List'<'T'>' för arrayer.
Den här konverteringen är särskilt vanlig i ASP.NET Core-webb-API:er, Azure Functions och alla .NET-tjänster som konsumerar extern JSON-data. Istället för att använda dynamic eller Dictionary'<'string, object'>' ger typade klasser dig typsäkerhet vid kompileringstid, IntelliSense-stöd och skydd mot stavfel i fältnamn som annars bara skulle uppstå vid körningstid. Klistra in din JSON i det här verktyget och få färdiga C#-klasser direkt.
Varför använda en JSON till C#-generator?
Att skriva C#-modellklasser manuellt från JSON-exempel tar tid och introducerar mänskliga fel. En generator hanterar de repetitiva delarna så att du kan fokusera på affärslogiken.
⚡
Omedelbar klassgenerering
Klistra in din JSON och få kompletta C#-klasser på under en sekund. Ingen manuell egenskapstyping, inget glömt fält.
🔒
Integritetsfokuserad hantering
All konvertering körs i din webbläsare. Din JSON-data lämnar aldrig din maskin, så API-nycklar, tokens och personuppgifter förblir privata.
📋
Korrekt attributmappning
Genererade klasser inkluderar JsonPropertyName-attribut som mappar PascalCase C#-egenskaper till de ursprungliga JSON-nyckelnamnen, vilket förhindrar deserialiseringsmissmatchningar.
🌐
Inget konto eller installation krävs
Öppna sidan och klistra in din JSON. Inga NuGet-paket att installera, inga Visual Studio-tillägg att konfigurera, inga registreringsformulär.
Användningsfall för JSON till C#
Backend-API-integration
Generera request- och response-modeller för tredjeparts-REST-API:er. Klistra in exempel-JSON från API-dokumentation och få färdiga C#-klasser för HttpClient-anrop.
ASP.NET Core Controllers
Skapa modellklasser för action-metodparametrar. När din endpoint tar emot en JSON-body ger den genererade klassen dig automatisk modellbindning och validering.
Azure Functions och Serverless
Bygg in- och utdatabindningar för Azure Functions som bearbetar JSON-meddelanden från köer, event hubs eller HTTP-triggers.
Konfigurationsdeserialisering
Konvertera appsettings.json-sektioner eller externa konfigurationsfiler till typade C#-optionsklasser för användning med IOptions'<'T'>' i dependency injection.
Databassådd och migrering
Omvandla JSON-fixture-filer till C#-objekt för Entity Framework-startdata, integrationstestuppsättningar eller datamigreringsscript.
Lär dig C#:s typsystem
Studenter och utvecklare som är nya med .NET kan se hur JSON-typer mappas till C#-typer, förstå egenskapsaccessorer och lära sig om serialiseringsattribut med hjälp av konkreta exempel.
Referens för JSON till C#-typmappning
Varje JSON-värdetyp mappas till en specifik C#-typ. Generatorn analyserar faktiska värden för att välja den mest precisa typen. Ett JSON-tal utan decimalpunkt blir till exempel int, medan 3.14 blir double. Null-värden ger object? (nullbar referenstyp) eftersom den faktiska typen inte kan härledas från null ensamt.
JSON-typ
Exempel
C#-typ
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 har två stora JSON-serialiseringsbibliotek. Klasserna som genereras av det här verktyget använder System.Text.Json-attribut (JsonPropertyName), vilket är det inbyggda alternativet sedan .NET Core 3.0. Om ditt projekt använder Newtonsoft.Json kan du byta ut attributen.
System.Text.Json
Inbyggt i .NET sedan Core 3.0. Snabbare och lägre minnesanvändning än Newtonsoft. Använder [JsonPropertyName] för egenskapsmappning. Standardvalet för nya .NET 6+-projekt. Stöder inte alla Newtonsoft-funktioner som JsonPath eller referenshantering direkt ur lådan.
Newtonsoft.Json
Det ursprungliga .NET JSON-biblioteket (Json.NET). Använder [JsonProperty] för egenskapsmappning. Stöder mer avancerade scenarier: polymorf serialisering, JsonPath-frågor och anpassade konverterare med större flexibilitet. Fortfarande vanligt i äldre kodbaser och projekt som behöver funktioner som System.Text.Json saknar.
Kodexempel
Dessa exempel visar hur man definierar och använder C#-klasser genererade från JSON, med båda de stora serialiseringsbiblioteken, samt hur man automatiserar generering från kommandoraden.
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; }
// }
Vad är skillnaden mellan JsonPropertyName och JsonProperty?
JsonPropertyName är attributet från System.Text.Json, den inbyggda .NET-serialiseraren. JsonProperty kommer från Newtonsoft.Json (Json.NET), ett tredjepartsbibliotek. Båda mappar ett C#-egenskapsnamn till ett JSON-fältnamn, men de tillhör olika namnrymder och är inte utbytbara. Använd JsonPropertyName för nya .NET 6+-projekt och JsonProperty om ditt projekt redan är beroende av Newtonsoft.
Hur hanterar generatorn nästlade JSON-objekt?
Varje nästlat objekt blir sin egen C#-klass. Egenskapen i föräldraklassen använder den nästlade klassen som sin typ. Om din JSON till exempel har ett "address"-fält som innehåller ett objekt med "street" och "city" skapar generatorn en Address-klass och typar egenskapen som Address i föräldraklassen.
Vad händer med JSON-arrayer som innehåller blandade typer?
Generatorn härleder arrayelementtypen från det första icke-null-elementet. Om arrayen innehåller blandade typer (strängar och tal blandat) faller den genererade typen tillbaka till List'<'object'>'. I praktiken blandar välstrukturerade API-svar sällan typer inom en enda array.
Kan jag använda de genererade klasserna med Entity Framework?
Ja, men du behöver lägga till EF-specifika annoteringar som [Key], [Required] eller [Column]-attribut. De genererade klasserna ger dig egenskapsstrukturen; behandla dem som ett skelett och lägg till EF-konfiguration ovanpå. EF förväntar sig också en parameterlös konstruktor, vilket de genererade klasserna redan har som standard.
Hur konverteras null-värden i JSON till C#?
Ett JSON-null-värde ger typen object? eftersom generatorn inte kan avgöra den avsedda typen från null ensamt. Efter genereringen bör du ersätta object? med rätt nullbar typ (string?, int? eller en specifik klass?) baserat på din kunskap om API-schemat.
Mappas camelCase-JSON automatiskt till PascalCase C#-egenskaper?
Ja. Generatorn konverterar JSON-nycklar som "firstName" till PascalCase-egenskaper som FirstName och lägger till ett [JsonPropertyName("firstName")]-attribut. Det säkerställer att serialiseraren mappar mellan de två namnkonventionerna automatiskt under serialisering och deserialisering.
Hur hanterar jag JSON med valfria fält i C#?
Gör egenskapstypen nullbar (t.ex. string? eller int?) och ange ett standardvärde. Med System.Text.Json kan du också konfigurera JsonSerializerOptions.DefaultIgnoreCondition för att hoppa över null-värden vid serialisering. Generatorn producerar icke-nullbara typer som standard, så granska och justera nullbarheten baserat på ditt API-kontrakt.