JavaScriptSerializer.ConvertToType 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
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 格式字串的名稱/值組字典。
如果物件圖形太複雜,或 已註冊的 JavaScriptConverter 實例造成轉換器遞迴,方法 Serialize 也可以擲回例外狀況。
適用於
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" 屬性,但與序列化程式相關聯的類型解析程式找不到對應的 Managed 類型。
-或-
obj
(或 obj
的巢狀成員) 包含表示自訂類型的 "__type" 屬性,但還原序列化對應 JSON 字串的結果無法指派給預期的目標類型。
-或-
obj
(或 obj
的巢狀成員) 包含 "__type" 屬性,表示 Object 或不可執行個體化的類型 (例如,抽象類型或介面)。
-或-
嘗試將 obj
轉換成陣列式的 Managed 類型,但是不支援使用該類型做為還原序列化目標。
-或-
無法將 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
實例。 在此轉換期間,不保證會維護物件參考相等。 因此,您無法假設 obj
並 T
參考相同的物件。
ConvertToType 如果您實作衍生自 JavaScriptConverter 的類別,則會使用 。 轉換器程式碼必須能夠取得序列化程式傳遞給它的字典中的值,然後將該值轉換為 類型的 T
實例。 您可以從轉換程式碼呼叫 ConvertToType 方法,而不是重新實作自訂轉換程式碼來執行這項工作。