Serializacja i deserializacja JSON na platformie .NET — omówienie
Przestrzeń nazw System.Text.Json zapewnia funkcjonalność serializacji i deserializacji (lub marshalingu i unmarshalingu) JavaScript Object Notation (JSON). Serializacja to proces konwertowania stanu obiektu, czyli wartości jego właściwości na formularz, który można przechowywać lub przesyłać. Formularz serializowany nie zawiera żadnych informacji o metodach skojarzonych z obiektem. Deserializacja rekonstrukuje obiekt z postaci serializowanej.
Projekt System.Text.Json
biblioteki podkreśla wysoką wydajność i niską alokację pamięci w ramach rozbudowanego zestawu funkcji. Wbudowana obsługa protokołu UTF-8 optymalizuje proces odczytywania i zapisywania tekstu JSON zakodowanego jako UTF-8, który jest najbardziej rozpowszechnionym kodowaniem danych w internecie i plikach na dysku.
Biblioteka udostępnia również klasy do pracy z modelem obiektów dokumentów w pamięci (DOM). Ta funkcja umożliwia losowy dostęp do elementów w pliku lub ciągu JSON.
W przypadku języka Visual Basic istnieją pewne ograniczenia dotyczące części biblioteki, których można użyć. Aby uzyskać więcej informacji, zobacz Obsługa języka Visual Basic.
Jak pobrać bibliotekę
Biblioteka jest wbudowana w ramach struktury udostępnionej dla platformy .NET Core 3.0 i nowszych wersji. Funkcja generowania źródła jest wbudowana w ramach platformy udostępnionej dla platformy .NET 6 i nowszych wersji.
W przypadku wersji platformy starszej niż .NET Core 3.0 zainstaluj System.Text.Json pakiet NuGet. Pakiet obsługuje:
- .NET Standard 2.0 lub nowszy
- .NET Framework 4.6.2 i nowsze
- .NET 8 lub nowszy
Przestrzenie nazw i interfejsy API
- System.Text.Json Przestrzeń nazw zawiera wszystkie punkty wejścia i główne typy.
- System.Text.Json.Serialization Przestrzeń nazw zawiera atrybuty i interfejsy API dla zaawansowanych scenariuszy i dostosowania specyficzne dla serializacji i deserializacji.
- Przestrzeń nazw System.Net.Http.Json zawiera metody rozszerzenia dla serializacji i deserializacji ładunków JSON zsieci .
Ważne
System.Text.Json
program nie obsługuje następujących interfejsów API serializacji, które mogły być wcześniej używane:
- Atrybuty z System.Runtime.Serialization przestrzeni nazw.
- Atrybut System.SerializableAttribute i ISerializable interfejs. Te typy są używane tylko w przypadku serializacji binarnej i XML.
Odbicie a generowanie źródła
Domyślnie zbiera metadane, System.Text.Json
których potrzebuje, aby uzyskać dostęp do właściwości obiektów na potrzeby serializacji i deserializacji w czasie wykonywania przy użyciu odbicia. Alternatywnie można użyć funkcji generowaniaSystem.Text.Json
, aby zwiększyć wydajność, zmniejszyć użycie pamięci prywatnej i ułatwić przycinanie zestawów, co zmniejsza rozmiar aplikacji.
Aby uzyskać więcej informacji, zobacz Odbicie i generowanie źródła.
Informacje o zabezpieczeniach
Aby uzyskać informacje na temat zagrożeń bezpieczeństwa, które zostały uwzględnione podczas projektowania JsonSerializeri sposobu ich ograniczenia, zobacz System.Text.Json
Model zagrożeń.
Bezpieczeństwo wątkowe
System.Text.Json
Serializator został zaprojektowany z myślą o bezpieczeństwie wątków. Praktycznie oznacza to, że po zablokowaniu JsonSerializerOptions wystąpienia mogą być bezpiecznie współużytkowane przez wiele wątków.
JsonDocument udostępnia niezmienną reprezentację modelu DOM dla wartości JSON w wersjach .NET 8 i nowszych.