JavaScriptSerializer.ConvertToType Metoda

Definicja

Przeciążenia

Nazwa Opis
ConvertToType(Object, Type)

Konwertuje określony obiekt na określony typ.

ConvertToType<T>(Object)

Konwertuje dany obiekt na określony typ.

ConvertToType(Object, Type)

Konwertuje określony obiekt na określony typ.

public:
 System::Object ^ ConvertToType(System::Object ^ obj, Type ^ targetType);
public object ConvertToType(object obj, Type targetType);
member this.ConvertToType : obj * Type -> obj
Public Function ConvertToType (obj As Object, targetType As Type) As Object

Parametry

obj
Object

Obiekt do konwersji.

targetType
Type

Typ, na który ma być konwertowany obiekt.

Zwraca

Serializowany ciąg JSON.

Wyjątki

Wynikowy ciąg sformatowany w formacie JSON przekracza wartość MaxJsonLength.

— lub —

obj zawiera odwołanie cykliczne. Odwołanie cykliczne występuje, gdy obiekt podrzędny ma odwołanie do obiektu nadrzędnego, a obiekt nadrzędny ma odwołanie do obiektu podrzędnego.

Przekroczono limit rekursji zdefiniowany przez RecursionLimit element .

Uwagi

JavaScriptSerializer Gdy wystąpienie serializuje typ, dla którego zarejestrowano konwerter niestandardowy, serializator wywołuje Serialize metodę w celu uzyskania słownika par nazw/wartości, które zostaną przekonwertowane na ciąg sformatowany w formacie JSON.

Metoda Serialize może również zgłaszać wyjątki, jeśli wykres obiektu jest zbyt złożony lub jeśli zarejestrowane wystąpienia spowodowały JavaScriptConverter rekursję konwertera.

Dotyczy

ConvertToType<T>(Object)

Konwertuje dany obiekt na określony typ.

public:
generic <typename T>
 T ConvertToType(System::Object ^ obj);
public T ConvertToType<T>(object obj);
member this.ConvertToType : obj -> 'T
Public Function ConvertToType(Of T) (obj As Object) As T

Parametry typu

T

Typ, do którego obj zostanie przekonwertowany.

Parametry

obj
Object

Obiekt do konwersji.

Zwraca

T

Obiekt, który został przekonwertowany na typ docelowy.

Wyjątki

obj (lub zagnieżdżony element członkowski ) obj zawiera właściwość "__type", która wskazuje typ niestandardowy, ale program rozpoznawania typów skojarzony z serializatorem nie może odnaleźć odpowiedniego typu zarządzanego.

— lub —

obj (lub zagnieżdżony element członkowski ) obj zawiera właściwość "__type", która wskazuje typ niestandardowy, ale wynik deserializacji odpowiedniego ciągu JSON nie może być przypisany do oczekiwanego typu docelowego.

— lub —

obj (lub zagnieżdżony element członkowski ) obj zawiera właściwość "__type", która wskazuje Object lub typ niemożliwy do utworzenia wystąpienia (na przykład typ abstrakcyjny lub interfejs).

— lub —

Podjęto próbę konwersji obj na typ zarządzany podobny do tablicy, który nie jest obsługiwany do użycia jako cel deserializacji.

— lub —

Nie można przekonwertować obj na T.

obj jest typem słownika i napotkano wartość klucza innego niż ciąg.

— lub —

obj zawiera definicje składowych, które nie są dostępne w typie T.

Przykłady

W poniższym przykładzie pokazano, jak za pomocą ConvertToType metody uzyskać ListItem obiekt z wartości w słowniku przekazywanym do konwertera. Ten przykład kodu jest częścią większego przykładu udostępnionego dla klasy JavaScriptSerializer.

ArrayList itemsList = (ArrayList)dictionary["List"];
for (int i=0; i<itemsList.Count; i++)
    list.Add(serializer.ConvertToType<ListItem>(itemsList[i]));
Dim itemsList As ArrayList = CType(dictionary("List"), ArrayList)
Dim i As Integer
For i = 0 To itemsList.Count - 1
    list.Add(serializer.ConvertToType(Of ListItem)(itemsList(i)))
Next i

Uwagi

Metoda ConvertToType próbuje przekonwertować wystąpienie obiektu reprezentowane przez obj wystąpienie typu T. Podczas tej konwersji nie ma gwarancji, że równość odwołań do obiektów jest zachowywana. W związku z tym nie można założyć, że obj i T odwołać się do tego samego obiektu.

ConvertToType ma być używany, jeśli implementujesz klasę pochodzącą z JavaScriptConverterklasy . Kod konwertera musi mieć możliwość pobrania wartości, która znajduje się w słowniku, do którego przechodzi serializator, a następnie przekonwertować ją na wystąpienie typu T. Zamiast ponownie implementować kod konwersji niestandardowej w celu wykonania tego zadania, można wywołać ConvertToType metodę z kodu konwertera.

Dotyczy