JavaScriptSerializer.ConvertToType 方法

定义

重载

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

对象要转换为的类型。

返回

Object

序列化的 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”属性,但是与序列化程序关联的类型解析程序找不到相应的托管类型。

  • 或 - obj(或 obj 的嵌套成员)包含指示自定义类型的“__type”属性,但是反序列化相应 JSON 字符串的结果无法分配给所需的目标类型。

  • 或 - obj(或 obj 的嵌套成员)包含指示 Object 或不可实例化的类型(例如,抽象类型或接口)的“__type”属性。

  • 或 - 尝试将 obj 转换为类似数组的托管类型,该类型不可用作反序列化目标。

  • 或 - 不能将 obj 转换为 T

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 方法,而不是重新实现自定义转换代码来执行此任务。

适用于