JavaScriptSerializer.ConvertToType Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Přetížení
ConvertToType(Object, Type) |
Převede zadaný objekt na zadaný typ. |
ConvertToType<T>(Object) |
Převede daný objekt na zadaný typ. |
ConvertToType(Object, Type)
Převede zadaný objekt na zadaný 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
Převáděný objekt
- targetType
- Type
Typ, na který chcete objekt převést.
Návraty
Serializovaný řetězec JSON.
Výjimky
Výsledný řetězec formátovaný ve formátu JSON překračuje hodnotu MaxJsonLength.
-nebo-
obj
obsahuje cyklický odkaz. Cyklický odkaz nastane, když podřízený objekt má odkaz na nadřazený objekt a nadřazený objekt má odkaz na podřízený objekt.
Došlo k překročení limitu rekurze definovaného uživatelem RecursionLimit .
Poznámky
JavaScriptSerializer Pokud instance serializuje typ, pro který je registrován vlastní převaděč, serializátor volá metodu Serialize získat slovník párů name/value, které budou převedeny na řetězec formátovaný JSON.
Metoda Serialize může také vyvolat výjimky, pokud je objektový graf příliš složitý nebo pokud registrované instance JavaScriptConverter způsobily rekurzi převaděče.
Platí pro
ConvertToType<T>(Object)
Převede daný objekt na zadaný 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, na který obj
bude převeden.
Parametry
- obj
- Object
Převáděný objekt
Návraty
- T
Objekt, který byl převeden na cílový typ.
Výjimky
obj
(nebo vnořený člen obj
) obsahuje vlastnost "__type", která označuje vlastní typ, ale překladač typů přidružený k serializátoru nemůže najít odpovídající spravovaný typ.
-nebo-
obj
(nebo vnořený člen obj
) obsahuje vlastnost "__type", která označuje vlastní typ, ale výsledek deserializace odpovídajícího řetězce JSON nelze přiřadit očekávanému cílovému typu.
-nebo-
obj
(nebo vnořený člen obj
) obsahuje vlastnost "__type", která označuje Object buď nebo ne instantovatelný typ (například abstraktní typ nebo rozhraní).
-nebo-
Došlo k pokusu o převod obj
na spravovaný typ podobný poli, který není podporován pro použití jako cíl deserializace.
-nebo-
Není možné převést obj
na T
.
obj
je typ slovníku a byla zjištěna hodnota klíče bez řetězce.
-nebo-
obj
obsahuje definice členů, které nejsou k dispozici u typu T
.
Příklady
Následující příklad ukazuje, jak použít metodu ConvertToType k získání ListItem objektu z hodnoty ve slovníku, který je předán převaděči. Tento příklad kódu je součástí většího příkladu poskytnutého JavaScriptSerializer pro třídu.
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
Poznámky
Metoda ConvertToType se pokusí převést instanci objektu, která je reprezentována obj
na instanci typu T
. Během tohoto převodu není zaručeno, že je zachována rovnost odkazů na objekty. Proto nelze předpokládat, že obj
a T
odkazuje na stejný objekt.
ConvertToType je určena k použití, pokud implementujete třídu, která je odvozena od JavaScriptConverter. Kód převaděče musí být schopen převzít hodnotu, která je ve slovníku, který serializátor předá, a pak tuto hodnotu převést na instanci typu T
. Místo opětovné implementace vlastního převodního kódu pro provedení této úlohy můžete volat metodu ConvertToType z kódu převaděče.