Implementere JsonSerializer-klassen i C#-apper
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.