JavaScriptSerializer.ConvertToType 方法

定義

多載

名稱 Description
ConvertToType(Object, Type)

將指定的物件轉換成指定的型別。

ConvertToType<T>(Object)

將給定物件轉換為指定的型別。

ConvertToType(Object, Type)

將指定的物件轉換成指定的型別。

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

參數

obj
Object

要轉換的物件。

targetType
Type

要將物件轉換成的類型。

傳回

序列化的 JSON 字串。

例外狀況

所產生的 JSON 格式字串超過 了 的 MaxJsonLength值。

-或-

obj 包含循環引用。 當子物件對父物件有參考,而父物件又有對子物件的參考時,就發生了循環參考。

遞迴極限 RecursionLimit 被超越。

備註

JavaScriptSerializer 實例正在序列化一個有自訂轉換器的類型時,序列化器會呼叫該 Serialize 方法,取得將轉換為 JSON 格式字串的名稱/值對字典。

若物件圖過於複雜,或註冊的 實Serialize例已導致轉換器遞迴,該JavaScriptConverter方法也能拋出例外。

適用於

ConvertToType<T>(Object)

將給定物件轉換為指定的型別。

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

類型參數

T

將被轉換成 obj 的類型。

參數

obj
Object

要轉換的物件。

傳回

T

已轉換成目標型別的物件。

例外狀況

obj (或是 的 obj巢狀成員)包含一個「__type」屬性,表示自訂型別,但與序列化器相關的型別解析器找不到對應的受管理型別。

-或-

obj (或是 的 obj巢狀成員)包含一個「__type」屬性,表示自訂型別,但反序列化對應的 JSON 字串結果無法被指派到預期的目標型別。

-或-

obj (或是 的 obj巢狀成員)包含一個「__type」屬性,表示 Object 非可瞬間化的類型(例如抽象型態或介面)。

-或-

曾嘗試轉換 obj 成類似陣列的管理型態,但不支援作為反序列化目標使用。

-或-

無法轉換為 objT

obj 是字典類型,且遇到非字串的鍵值。

-或-

obj 包含類型中無法取得 T的成員定義。

範例

以下範例說明如何使用此 ConvertToType 方法從字典中傳遞給轉換器的值中取得 ListItem 物件。 此程式碼範例是本類別更大範例 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

備註

ConvertToType 方法嘗試將由 表示 obj 的物件實例轉換為型別 T為 的實例。 在此轉換過程中,無法保證物件參照的相等性會被維持。 因此,你不能假設 並objT指代同一個物件。

ConvertToType 設計用於用於由 衍生 JavaScriptConverter的類別。 轉換器程式碼必須能夠將序列化器傳給字典中的一個值,然後將該值轉換成型別 T為 的實例。 你不必重新實作自訂轉換程式碼來執行此任務,而是可以從轉換器程式碼中呼叫該 ConvertToType 方法。

適用於