Udostępnij za pośrednictwem


JavaScriptSerializer.ConvertToType Metoda

Definicja

Przeciążenia

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

Do obiektu do skonwertowania.

targetType
Type

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

Zwraca

Object

Serializowany ciąg JSON.

Wyjątki

Wynikowy ciąg 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 program .

Uwagi

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

Metoda Serialize może również zgłaszać wyjątki, jeśli graf 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

Do obiektu do skonwertowania.

Zwraca

T

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

Wyjątki

obj (lub zagnieżdżony element członkowski elementu 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 elementu 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 elementu obj) zawiera właściwość "__type", która wskazuje lub Object typ niezwajny (na przykład typ abstrakcyjny lub interfejs).

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

-lub- Nie można przekonwertować obj pliku na T.

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

-lub- obj zawiera definicje elementów członkowskich, 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 JavaScriptSerializer dla klasy .

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 element na 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 jest przeznaczony do użycia w przypadku zaimplementowania klasy pochodzącej z klasy JavaScriptConverter. 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ć metodę ConvertToType z kodu konwertera.

Dotyczy