logo

Razčleni JSON v C#

Uvod:

Razčlenjevanje JSON v C# je pogosta naloga razvijalcev, ki gradijo aplikacije, ki uporabljajo podatke JSON. JSON predstavlja Zapis predmeta JavaScript in je lahek format za spreminjanje predstavitve podatkov, ki je optimalen za običajne uporabnike za branje in pisanje ter enostaven za strojno razčlenjevanje in ustvarjanje. V tem članku si bomo ogledali, kako razčleniti JSON v C# z uporabo vgrajenega .NET JSON razčlenjevanje knjižnic.

Razčlenjevanje JSON v C# je mogoče doseči na različne načine: z uporabo Knjižnica Newtonsoft.Json ali z uporabo Knjižnica System.Text.Json uveden v .NET Core 3.0 . Obe knjižnici sta priljubljeni izbiri za razčlenjevanje JSON v C# in nudita podobne funkcije.

1. način: uporaba paketa Newtonsoft.Json

Eden najbolj priljubljenih paketov za razčlenjevanje JSON v C# je Newtonsoft.Json . To je paket tretje osebe, ki ponuja preprost in prilagodljiv način za serializacijo in deserializacijo podatkov JSON.

Uporabiti Newtonsoft.Json v vašem projektu C#, ga morate najprej namestiti. Namestite ga lahko prek NuGet upravitelj paketov v Visual Studio ali z izvajanjem naslednjega ukaza v konzoli upravitelja paketov:

spomladanski oblak

Koda:

 Install-Package Newtonsoft.Json 

Ko je nameščen, ga lahko začnete uporabljati v svoji kodi. Tukaj je primer, kako razčleniti JSON z uporabo Newtonsoft.Json:

Koda C#:

 using Newtonsoft.Json; string json = @'{ 'name': 'John', 'age': 30, 'city': 'New York' }'; dynamic data = JsonConvert.DeserializeObject(json); string name = data.name; int age = data.age; string city = data.city; Console.WriteLine('Name: ' + name); Console.WriteLine('Age: ' + age); Console.WriteLine('City: ' + city); 

V tem primeru definiramo niz JSON in ga deserializiramo z uporabo JsonConvert.DeserializeObject metoda, ki jo zagotavlja Newtonsoft.Json . Metoda vrne dinamični objekt, ki nam omogoča dostop do podatkov JSON s sintakso lastnosti.

izklop razvijalskega načina

2. način: Uporaba imenskega prostora System.Text.Json

Začenši z .NET Core 3.0 in .NET 5.0, C# ponuja tudi vgrajeno knjižnico za razčlenjevanje JSON, imenovano System.Text.Json . Je lahek in hiter JSON serializator in deserializer, ki je vključen v .MREŽA čas izvajanja.

Tukaj je primer, kako razčleniti JSON z uporabo System.Text.Json:

Koda C#:

 using System.Text.Json; string json = @'{ 'name': 'John', 'age': 30, 'city': 'New York' }'; JsonDocument doc = JsonDocument.Parse(json); JsonElement root = doc.RootElement; string name = root.GetProperty('name').GetString(); int age = root.GetProperty('age').GetInt32(); string city = root.GetProperty('city').GetString(); Console.WriteLine('Name: ' + name); Console.WriteLine('Age: ' + age); Console.WriteLine('City: ' + city); 

V tem primeru uporabljamo JsonDocument.Parse metoda, ki jo zagotavlja System.Text.Json za razčlenitev niza JSON. Metoda vrne a JsonDocument objekt, ki predstavlja razčlenjene podatke JSON. Nato lahko dostopamo do podatkov JSON z uporabo JsonElement razred in njegov GetProperty metoda.

3. način: Uporaba razreda JavaScriptSerializer

Drug način za razčlenjevanje JSON v C# je z uporabo JavaScriptSerializer razreda, ki je del System.Web.Extensions montaža. Ta razred je bil uveden leta. NET Framework 3.5 in ponuja preprost način za deserializacijo podatkov JSON v strogo tipiziran objekt.

Za uporabo JavaScriptSerializer morate ustvariti razred, ki predstavlja objekt JSON, ki ga želite deserializirati. Razred mora imeti lastnosti, ki se ujemajo z imeni in tipi podatkov lastnosti objekta JSON. Recimo, da imate spodnji objekt JSON:

Objekt JSON:

obračanje niza v Javi
 { 'name': 'John Doe', 'age': 30, 'email': '[email protected]' } 

Ustvarite lahko razred, ki predstavlja ta objekt, kot sledi:

Koda C#:

polimorfizem java
 public class Person { public string Name { get; set; } public int Age { get; set; } public string Email { get; set; } } 

Ko definirate razred, lahko uporabite JavaScriptSerializer razred za deserializacijo podatkov JSON v primerek razreda Person:

Koda C#:

 string json = '{'name':'John Doe','age':30,'email':'[email protected]'}'; JavaScriptSerializer serializer = new JavaScriptSerializer(); Person person = serializer.Deserialize(json); 

V zgornjem primeru smo najprej definirali niz, ki vsebuje podatke JSON. Nato smo ustvarili primerek JavaScriptSerializer in uporabil njegovo metodo Deserialize za razčlenitev podatkov JSON v primerek razreda Person.

Omeniti velja, da je JavaScriptSerializer razred ima omejitve v primerjavi z drugima dvema metodama, o katerih smo razpravljali. Na primer, ne podpira nekaterih naprednejših funkcij JSON, kot je obravnavanje ničelnih vrednosti ali pretvorba med pravili o poimenovanju CamelCase in PascalCase. Prav tako nima vgrajene podpore za deserializacijo nizov JSON.

Zaključek:

V tem članku smo raziskali dva načina za razčlenjevanje JSON v C#: z uporabo Newtonsoft.Json knjižnico in uporabo System.Text.Json knjižnica. Obe knjižnici zagotavljata zmogljive zmožnosti razčlenjevanja JSON in ju pogosto uporabljajo razvijalci, ki gradijo aplikacije C#, ki uporabljajo podatke JSON.