Sdílet prostřednictvím


JavaScriptSerializer.ConvertToType Metoda

Definice

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

Object

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.

Platí pro