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

要将对象转换为的类型。

返回

序列化的 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 引用同一对象。

实现派生自 的类时,应使用 。 转换器代码必须能够获取序列化程序传递给它的字典中的值,然后将该值转换为类型的 T实例。 你可以从转换器代码调用 ConvertToType 方法,而不是重新实现自定义转换代码来执行此任务。

适用于