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”属性,但是与序列化程序关联的类型解析程序找不到相应的托管类型。
或 -
obj
(或obj
的嵌套成员)包含指示自定义类型的“__type”属性,但是反序列化相应 JSON 字符串的结果无法分配给所需的目标类型。或 -
obj
(或obj
的嵌套成员)包含指示 Object 或不可实例化的类型(例如,抽象类型或接口)的“__type”属性。或 - 尝试将
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
实例。 在此转换期间,无法保证维护对象引用相等性。 因此,不能假定 obj
并 T
引用同一对象。
ConvertToType 如果实现派生自 JavaScriptConverter的类,则用于使用此类。 转换器代码必须能够获取序列化程序传递给它的字典中的值,然后将该值转换为类型的 T
实例。 你可以从转换器代码调用 ConvertToType 方法,而不是重新实现自定义转换代码来执行此任务。