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:

using System.Text.Json;

Klassdesign

Klassen vars instanser ska kunna serialiseras/deserialiseras måste vara public.

Pokemon.cs
public class Pokemon
{
  public string name {get; set;}
  public int id {get; set;}
  public bool is_default {get; set;}
}

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.

JsonSerializer.Deserialize<>()

Används för att deserialisera ett objekt från en JSON-string.

Attribut

Mer om attribut här.

[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

Was this helpful?