JSON-serialisatie en deserialisatie in .NET - overzicht
De System.Text.Json-naamruimte biedt functionaliteit voor het serialiseren naar en deserialiseren van (bekend als marshalling en unmarshalling) JavaScript Object Notation (JSON). Serialisatie is het proces van het converteren van de status van een object, dat wil gezegd de waarden van de eigenschappen ervan, in een formulier dat kan worden opgeslagen of verzonden. Het geserialiseerde formulier bevat geen informatie over de bijbehorende methoden van een object. Deserialisatie reconstrueert een object uit de geserialiseerde vorm.
Het System.Text.Json
bibliotheekontwerp benadrukt hoge prestaties en lage geheugentoewijzing ten opzichte van een uitgebreide functieset. Ingebouwde UTF-8-ondersteuning optimaliseert het lezen en schrijven van JSON-tekst die is gecodeerd als UTF-8. Dit is de meest voorkomende codering voor gegevens op internet en bestanden op schijf.
De bibliotheek biedt ook klassen voor het werken met een documentobjectmodel (DOM) in het geheugen. Met deze functie kunt u willekeurige toegang krijgen tot de elementen in een JSON-bestand of -tekenreeks.
Voor Visual Basic gelden enkele beperkingen voor de onderdelen van de bibliotheek die u kunt gebruiken. Zie Visual Basic-ondersteuning voor meer informatie.
De bibliotheek ophalen
De bibliotheek is ingebouwd als onderdeel van het gedeelde framework voor .NET Core 3.0 en latere versies. De functie voor het genereren van bronnen is ingebouwd als onderdeel van het gedeelde framework voor .NET 6 en latere versies.
Installeer het System.Text.Json NuGet-pakket voor frameworkversies die ouder zijn dan .NET Core 3.0. Het pakket ondersteunt:
- .NET Standard 2.0 en hoger
- .NET Framework 4.6.2 en hoger
- .NET 8 en hoger
Naamruimten en API's
- De System.Text.Json naamruimte bevat alle toegangspunten en de hoofdtypen.
- De System.Text.Json.Serialization naamruimte bevat kenmerken en API's voor geavanceerde scenario's en aanpassingen die specifiek zijn voor serialisatie en deserialisatie.
- De System.Net.Http.Json-naamruimte bevat extensiemethoden voor het serialiseren en deserialiseren van JSON-gegevens vanuit het netwerk.
Belangrijk
System.Text.Json
biedt geen ondersteuning voor de volgende serialisatie-API's die u mogelijk eerder hebt gebruikt:
- Kenmerken uit de System.Runtime.Serialization naamruimte.
- Het System.SerializableAttribute kenmerk en de ISerializable interface. Deze typen worden alleen gebruikt voor binaire en XML-serialisatie.
Reflectie versus brongeneratie
Verzamelt standaard System.Text.Json
de metagegevens die nodig zijn voor toegang tot eigenschappen van objecten voor serialisatie en deserialisatie tijdens runtime met behulp van weerspiegeling. Als alternatief System.Text.Json
kunt u de functie voor het genereren van C#-bronnen gebruiken om de prestaties te verbeteren, het gebruik van privégeheugen te verminderen en assembly's te beperken, waardoor de app kleiner wordt.
Zie Reflectie versus brongeneratie voor meer informatie.
Beveiligingsgegevens
Zie Bedreigingsmodel voor informatie over beveiligingsrisico's die werden overwogen bij het ontwerpen JsonSerializeren hoe ze kunnen worden beperktSystem.Text.Json
.
Schroefdraadveiligheid
De System.Text.Json
serializer is ontworpen met threadveiligheid in het achterhoofd. Praktisch betekent dit dat exemplaren veilig kunnen worden gedeeld via meerdere threads nadat ze zijn vergrendeld JsonSerializerOptions .
JsonDocument biedt een onveranderbare weergave en in .NET 8 en hoger, thread-safe, DOM-weergave voor JSON-waarden.