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 метод для получения словаря пар name/value, которые будут преобразованы в строку в формате 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 в управляемый тип массива, который не поддерживается для использования в качестве целевого объекта десериализации.

–или–

Невозможно преобразовать 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. Во время этого преобразования не гарантируется, что равенство ссылок на объект поддерживается. Поэтому нельзя предположить, что obj и T ссылаться на тот же объект.

ConvertToType Предназначено для использования при реализации класса, наследуемого от JavaScriptConverter. Код конвертера должен иметь возможность принимать значение, которое находится в словаре, который сериализатор передает в него, а затем преобразовать это значение в экземпляр типа T. Вместо повторной реализации пользовательского кода преобразования для выполнения этой задачи можно вызвать ConvertToType метод из кода преобразователя.

Применяется к