JSON-serialisering
JSON är Javascript Object Notation, så för den som är van vid Javascript kanske det ser bekant ut.
Här hittar du Microsofts officiella dokumentation.
Bibliotek
Lägg till detta using-statement:
Klassdesign
Klassen vars instanser ska kunna serialiseras/deserialiseras måste vara public.
Vad som inkluderas i serialiseringen är:
Publika properties med publika get och set
Variabler och properties som det står [JsonInclude] framför
Om du ska deserialisera JSON-kod som du får från något annat ställe och inte designat själv, så behöver du vara noga med att matcha namnet på dina publika variabler/properties mot JSON-kodens. Serialiseringsprocessen är normalt känslig vad gäller stora och små bokstäver, men du kan ändra på detta (rekommenderas!).
JsonSerializer.Serialize<>()
Används för att serialisera ett objekt till en JSON-string.
Denna string kan sedan lagras i en textfil eller t.ex. skickas som svar på ett REST-anrop.
JsonSerializerOptions
Genom att skicka in ett JsonSerializerOptions-objekt kan man ge mer detaljerade instruktioner till serializern.
I JSON används oftast snake_case, medan C# ju använder camelCase eller PascalCase.
OBS: SnakeCaseLower introducerades i dotnet 8!
JsonSerializer.Deserialize<>()
Används för att deserialisera ett objekt från en JSON-string.
Attribut
Mer om attribut här.
OBS: dessa kräver att du inkluderar System.Text.Json.Serialization
.
[JsonInclude]
Används för att inkludera en variabel eller property i Json-serialiseringen
[JsonIgnore]
Används för att se till så att en variabel eller property på C#-sidan inte serialiseras till JSON.
[JsonPropertyName()]
Med attributet [JsonPropertyName()]
kan man bestämma att en C#-klass' property ska matchas mot ett JSON-värde med annat namn.
Deserialisering av listor
Ibland beskriver JSON-kod listor av objekt eller värden. De kännetecknas av att ge omges av hakparenteser []
.
För att deserialisera dessa, skapa helt enkelt publika listor i klassen.
Deserialisering av objekt i flera led
Ibland beskriver JSON-kod objekt som innehåller andra objekt.
För att deserialisera dessa, skapa klasser som beskriver de inre objekten.
Last updated