JavaScriptSerializer.ConvertToType Metoda

Definice

Přetížení

Name Description
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

Objekt, který chcete převést.

targetType
Type

Typ, na který chcete objekt převést.

Návraty

Serializovaný řetězec JSON.

Výjimky

Výsledný řetězec 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.

Byl překročen limit rekurze definovaný RecursionLimit pomocí.

Poznámky

JavaScriptSerializer Když instance serializuje typ, pro který je registrován vlastní převaděč, serializátor volá Serialize metodu získat slovník párů name/value, které budou převedeny na řetězec ve formátu JSON.

Metoda Serialize může také vyvolat výjimky, pokud je objektový graf příliš složitý nebo pokud registrované instance JavaScriptConverter způsobily převaděč rekurze.

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

Objekt, který chcete převést.

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 buď Object nebo ne okamžitě realizovatelný 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 pro typ T.

Příklady

Následující příklad ukazuje, jak pomocí ConvertToType metody získat ListItem objekt 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 uvedeného pro třídu 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

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 neexistuje žádná záruka, že je zachována rovnost odkazů na objekt. Proto nelze předpokládat, že obj a T odkazovat na stejný objekt.

ConvertToType je určena k použití, pokud implementujete třídu, která je odvozena z JavaScriptConverter. Kód převaděče musí být schopen vzít hodnotu, která je ve slovníku, který serializátor předá do něj, a pak tuto hodnotu převést na instanci typu T. Místo opětovné implementace vlastního kódu převodu k provedení této úlohy můžete volat ConvertToType metodu z kódu převaděče.

Platí pro