Implementere JsonSerializer-klassen i C#-apper

Fullført

Programmeringsspråket C# gir innebygd støtte for å arbeide med JSON-data gjennom navneområdet System.Text.Json . Dette navneområdet inneholder klasser og metoder for serialisering og deserialisering av JSON-data, noe som gjør det enkelt å konvertere C#-objekter til JSON og omvendt.

Hva er serialisering?

Serialisering er prosessen med å konvertere tilstanden til et objekt (verdiene i egenskapene) til et skjema som kan lagres eller sendes. Det serialiserte skjemaet inneholder ingen informasjon om tilknyttede metoder for et objekt.

I konteksten til et C#-program brukes serialisering til å konvertere et C#-objekt til en JSON-streng. Dette er nyttig for lagring av data til filer, sending av data over nettverk eller lagring av data i databaser. Eksempel:

  • Serialisering er viktig for datautveksling mellom ulike systemer eller programmer, spesielt når de bruker forskjellige programmeringsspråk eller plattformer. Det gir enkel deling av data i et standardisert format som kan forstås av ulike systemer.
  • Serialisering brukes også i nett-API-er til å sende og motta data mellom klienter og servere. Når en klient sender en forespørsel til en server, kan serveren serialisere svardataene i JSON-format, som klienten deretter kan deserialisere tilbake til et objekt.
  • Serialisering brukes i datalagringsscenarioer, for eksempel lagring av programtilstand eller brukerinnstillinger. Ved å serialisere objekter til JSON kan utviklere enkelt lagre og hente komplekse datastrukturer uten å måtte analysere eller formatere dataene manuelt.
  • Serialisering brukes ofte i hurtigbufringsmekanismer, der data lagres i et serialisert format for å forbedre ytelsen og redusere behovet for gjentatte databasespørringer eller beregninger.

Deserialisering er den omvendte prosessen med serialisering, der en JSON-streng konverteres tilbake til et C#-objekt. Deserialisering gjør det mulig for utviklere å arbeide med JSON-data på en mer strukturert måte ved hjelp av C#-objekter og egenskaper. Dette er spesielt nyttig når du arbeider med API-er eller eksterne datakilder som returnerer JSON-svar, eller når du arbeider med informasjon som er lagret i JSON-filer.

Undersøk navneområdet System.Text.Json

Navneområdet System.Text.Json er et kraftig bibliotek i .NET for arbeid med JSON-data. Den gir funksjonalitet for både serialisering (konvertering av C#-objekter til JSON) og deserialisering (konvertereR JSON tilbake til C#-objekter). Biblioteket er utformet for å være raskt, effektivt og enkelt å bruke, noe som gjør det til et populært valg for utviklere som arbeider med JSON i C#-programmer.

Biblioteket System.Text.Json er en del av .NET Core Framework og er inkludert i .NET 5 og nyere versjoner. Det gir et sett med klasser og metoder for å arbeide med JSON-data, inkludert:

  • JsonSerializer: En klasse for konvertering av C#-objekter til JSON og omvendt. Den inneholder metoder for serialisering og deserialisering av JSON-data, samt alternativer for tilpassing av serialiseringsprosessen.
  • JsonDocument: En klasse for lesing og analyse av JSON-data. Det gjør det mulig for utviklere å navigere og spørre JSON-strukturer uten å måtte deserialisere dem til C#-objekter.
  • JsonElement: En struktur som representerer en JSON-verdi. Det gir metoder for tilgang til og manipulering av JSON-data, slik at utviklere kan arbeide med JSON-strukturer på en mer fleksibel måte.

Klassen JsonSerializer er den primære klassen som brukes til serialisering og deserialisering i navneområdet System.Text.Json . Den inneholder metoder for å konvertere C#-objekter til JSON-strenger og omvendt, noe som gjør det enkelt å arbeide med JSON-data i C#-programmer.

JsonSerializer Undersøk klassen

Klassen JsonSerializer inneholder følgende metoder for serialisering og deserialisering av JSON:

  • Serialize: Konverterer et C#-objekt til en JSON-streng.
  • Deserialize: Konverterer en JSON-streng tilbake til et C#-objekt.

Serialiser et objekt til JSON ved hjelp av JsonSerializer.Serialize

Metoden JsonSerializer.Serialize brukes til å konvertere et objekt til en JSON-strengpresentasjon. Dette er nyttig for lagring av data til filer, sending av data over nettverk eller lagring av data i databaser. Metoden Serialize tar et objekt som inndata og returnerer en JSON-streng.

Følgende kode viser hvordan du konverterer et objekt til en JSON-streng ved hjelp av JsonSerializer.Serialize:


using System;
using System.Text.Json;
using System.Text.Json.Serialization;

public class Employee
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string Address { get; set; }
}

class Program
{
    static void Main()
    {
        var customer = new Employee { Name = "Anette Thomsen", Age = 30, Address = "123 Main St" };
        string jsonString = JsonSerializer.Serialize(customer);
        Console.WriteLine(jsonString);
    }
}

// Output: {"Name":"Anette Thomsen","Age":30,"Address":"123 Main St"}

Denne koden definerer en enkel Employee klasse med egenskaper for Name, Ageog Address. Metoden JsonSerializer.Serialize brukes til å konvertere en forekomst av Employee klassen til en JSON-streng. Utdataene er en JSON-representasjon av objektet, som enkelt kan lagres eller sendes.

Deserialiser JSON til et objekt ved hjelp av JsonSerializer.Deserialize

Metoden JsonSerializer.Deserialize brukes til å konvertere en JSON-streng tilbake til et C#-objekt. Deserialisering er nyttig for å lese data fra filer, motta data fra API-er eller behandle JSON-data generelt. Metoden Deserialize tar en JSON-streng og objekttypen som skal opprettes som inndata, og returnerer en forekomst av objektet.

Følgende kode viser hvordan du konverterer en JSON-streng tilbake til et objekt ved hjelp av JsonSerializer.Deserialize:


using System;
using System.Text.Json;
using System.Text.Json.Serialization;

public class Employee
{
    public string Name { get; set; } = "Anette Thomsen";
    public int Age { get; set; }
    public string Address { get; set; } = "123 Main St";
}

class Program
{
    static void Main()
    {
        string jsonString1 = "{\"Name\":\"Anette Thomsen\",\"Age\":30,\"Address\":\"123 Main St\"}";
        string jsonString2 = @"{""Name"":""Anette Thomsen"",""Age"":30,""Address"":""123 Main St""}";
        var customer = JsonSerializer.Deserialize<Employee>(jsonString2);
        if (customer != null)
        {
            Console.WriteLine($"Name: {customer.Name}, Age: {customer.Age}, Address: {customer.Address}");
        }
        else
        {
            Console.WriteLine("Deserialization failed.");
        }
    }
}

// Output: Name: Anette Thomsen, Age: 30, Address: 123 Main St

Denne koden definerer en JSON-streng som representerer et Employee objekt. Metoden JsonSerializer.Deserialize brukes til å konvertere JSON-strengen tilbake til en forekomst av Employee klassen. Metoden JsonSerializer.Deserialize er generisk, noe som betyr at du kan angi hvilken type objekt du forventer at JSON-strengen skal representere.

I dette tilfellet angir Employee vi som typeparameter, slik at metoden kan opprette en forekomst av Employee klassen basert på JSON-dataene. Metoden Deserialize returnerer en forekomst av Employee klassen. Du kan få tilgang til egenskapene for det deserialiserte objektet direkte, som vist i eksemplet. Hvis deserialiseringen mislykkes (for eksempel hvis JSON-strengen er ugyldig eller ikke samsvarer med den forventede strukturen), returnerer metoden null, og du kan håndtere denne saken tilsvarende.

Legg merke til at manuell bygging av JSON-strengen krever enten escape-tegn eller ordrett strenglitteraler. Symbolet @ før strengen indikerer at det er en ordrett strenglitteral. Ordrett strenglitteraler gjør det enklere å lese formatering.

Sammendrag

I denne enheten lærte du hvordan du arbeider med JSON-data i C# ved hjelp av navneområdet System.Text.Json . Du utforsket begrepene serialisering og deserialisering, som lar deg konvertere C#-objekter til JSON-strenger og omvendt. Du undersøkte JsonSerializer også klassen, som inneholder metoder for serialisering og deserialisering av JSON-data. Du så eksempler på hvordan du bruker Serialize og Deserialize metoder for å konvertere objekter til JSON og tilbake, noe som gjør det enkelt å arbeide med JSON-data i C#-programmer. Å forstå disse konseptene er avgjørende for å arbeide med API-er, datalagring og datautveksling i moderne programvareutvikling.