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 字符串。
例外
已超出定义的 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
要转换的对象。
返回
已转换为目标类型的对象。
例外
obj (或嵌套成员) obj包含一个指示自定义类型的“__type”属性,但与序列化程序关联的类型解析程序找不到相应的托管类型。
-或-
obj (或嵌套成员) obj包含一个指示自定义类型的“__type”属性,但无法将相应的 JSON 字符串反序列化的结果分配给预期的目标类型。
-或-
obj (或嵌套成员) obj包含一个“__type”属性,该属性指示 Object 或不可实例化类型(例如抽象类型或接口)。
-或-
尝试转换为 obj 类似于数组的托管类型,该类型不支持用作反序列化目标。
-或-
无法转换为 objT。
示例
下面的示例演示如何使用 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 引用同一对象。
T实例。 你可以从转换器代码调用 ConvertToType 方法,而不是重新实现自定义转换代码来执行此任务。