logo

Parseer JSON in C#

Invoering:

Het parseren van JSON in C# is een veel voorkomende taak voor ontwikkelaars die applicaties bouwen die JSON-gegevens verbruiken. JSON vertegenwoordigt JavaScript-objectnotatie en is een lichtgewicht formaat voor het wijzigen van gegevensrepresentatie dat optimaal is voor normale gebruikers om te lezen en te schrijven en dat machines gemakkelijk kunnen parseren en genereren. In dit artikel zullen we bekijken hoe JSON in C# kan worden geparseerd met behulp van het ingebouwde .NET JSON het ontleden van bibliotheken.

JSON-parsing in C# kan op verschillende manieren worden bereikt: met behulp van de Newtonsoft.Json-bibliotheek of gebruik maken van de System.Text.Json-bibliotheek geïntroduceerd .NET Core 3.0 . Beide bibliotheken zijn populaire keuzes voor JSON-parsing in C# en bieden vergelijkbare functionaliteiten.

Methode 1: Het pakket Newtonsoft.Json gebruiken

Een van de meest populaire pakketten voor het parseren van JSON in C# is Newtonsoft.Json . Het is een pakket van derden dat een eenvoudige en flexibele manier biedt om JSON-gegevens te serialiseren en te deserialiseren.

Gebruiken Newtonsoft.Json in uw C#-project moet u het eerst installeren. Je kunt het installeren via de NuGet pakketbeheerder in Visuele studio of door de volgende opdracht uit te voeren in de Package Manager Console:

postorder traversal van binaire boom

Code:

 Install-Package Newtonsoft.Json 

Eenmaal geïnstalleerd, kunt u het in uw code gaan gebruiken. Hier is een voorbeeld van hoe u JSON kunt parseren met behulp van Newtonsoft.Json:

C#-code:

 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); 

In dit voorbeeld definiëren we een JSON-tekenreeks en deserialiseren we deze met behulp van de JsonConvert.DeserializeObject methode aangeboden door Newtonsoft.Json . De methode retourneert een dynamisch object, waarmee we toegang krijgen tot de JSON-gegevens met behulp van de eigenschapsyntaxis.

kathodestraalbuismonitor

Methode 2: De naamruimte System.Text.Json gebruiken

Beginnend met .NET Core 3.0 En .NET 5.0, C# biedt ook een ingebouwde JSON Parsing-bibliotheek genaamd System.Text.Json . Het is een lichtgewicht en snelle JSON-serializer en deserializer die is opgenomen in de .NETTO looptijd.

Hier is een voorbeeld van hoe u JSON kunt parseren met behulp van Systeem.Text.Json:

C#-code:

 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); 

In dit voorbeeld gebruiken we de JsonDocument.Parse methode aangeboden door System.Text.Json om de JSON-tekenreeks te parseren. De methode retourneert a JsonDocument object, dat de geparseerde JSON-gegevens vertegenwoordigt. We hebben vervolgens toegang tot de JSON-gegevens met behulp van de JsonElement klasse en zijn Eigendom verkrijgen methode.

Methode 3: De JavaScriptSerializer-klasse gebruiken

Een andere manier om JSON in C# te parseren is door gebruik te maken van de JavaScriptSerializer klasse, die deel uitmaakt van de Systeem.Web.Extensies montage. Deze klasse werd geïntroduceerd in . NET Framework 3.5 en biedt een eenvoudige manier om JSON-gegevens te deserialiseren naar een sterk getypeerd object.

Om de JavaScriptSerializer class, moet u een klasse maken die het JSON-object vertegenwoordigt dat u wilt deserialiseren. De klasse moet eigenschappen hebben die overeenkomen met de namen en gegevenstypen van de eigenschappen van het JSON-object. Stel dat u bijvoorbeeld het onderstaande JSON-object heeft:

doe terwijl java

JSON-object:

 { 'name': 'John Doe', 'age': 30, 'email': '[email protected]' } 

U kunt als volgt een klasse maken die dit object vertegenwoordigt:

C#-code:

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

Nadat u de klasse hebt gedefinieerd, kunt u de JavaScriptSerializer class om de JSON-gegevens te deserialiseren naar een exemplaar van de Person-klasse:

C#-code:

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

In het bovenstaande voorbeeld hebben we eerst een string gedefinieerd die de JSON-gegevens bevat. Vervolgens hebben we een exemplaar gemaakt van de JavaScriptSerializer class en gebruikte de Deserialize-methode om de JSON-gegevens te parseren in een exemplaar van de Person-klasse.

Het is vermeldenswaard dat de JavaScriptSerializer klasse heeft beperkingen vergeleken met de andere twee methoden die we hebben besproken. Het biedt bijvoorbeeld geen ondersteuning voor enkele van de meer geavanceerde functies van JSON, zoals het verwerken van null-waarden of het converteren tussen camelCase- en PascalCase-naamgevingsconventies. Het heeft ook geen ingebouwde ondersteuning voor het deserialiseren van JSON-arrays.

Conclusie:

In dit artikel hebben we twee manieren onderzocht om JSON in C# te parseren: met behulp van de Newtonsoft.Json bibliotheek en het gebruik van de System.Text.Json bibliotheek. Beide bibliotheken bieden krachtige JSON-parseermogelijkheden en worden veel gebruikt door ontwikkelaars die C#-applicaties bouwen die JSON-gegevens verbruiken.