Compartilhar via


JavaScriptSerializer.ConvertToType Método

Definição

Sobrecargas

ConvertToType(Object, Type)

Converte o objeto especificado no tipo especificado.

ConvertToType<T>(Object)

Converte o objeto fornecido no tipo especificado.

ConvertToType(Object, Type)

Converte o objeto especificado no tipo especificado.

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

Parâmetros

obj
Object

O objeto a ser convertido.

targetType
Type

O tipo no qual converter o objeto.

Retornos

Object

A cadeia de caracteres JSON serializada.

Exceções

A cadeia de caracteres formatada como JSON excede o valor de MaxJsonLength.

- ou - obj contém uma referência circular. Uma referência circular ocorre quando um objeto filho tem uma referência a um objeto pai e o objeto pai tem uma referência ao objeto filho.

O limite de recursão definido pelo RecursionLimit foi excedido.

Comentários

Quando a JavaScriptSerializer instância está serializando um tipo para o qual um conversor personalizado é registrado, o serializador chama o Serialize método para obter o dicionário de pares nome/valor que serão convertidos em uma cadeia de caracteres formatada em JSON.

O Serialize método também pode gerar exceções se o grafo de objeto for muito complexo ou se instâncias registradas tiverem causado a recursão do JavaScriptConverter conversor.

Aplica-se a

ConvertToType<T>(Object)

Converte o objeto fornecido no tipo especificado.

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

Parâmetros de tipo

T

O tipo para o qual o obj será convertido.

Parâmetros

obj
Object

O objeto a ser convertido.

Retornos

T

O objeto que foi convertido para o tipo de destino.

Exceções

O obj (ou um membro aninhado de obj) contém uma propriedade "__type" que indica um tipo personalizado, mas o resolvedor de tipo associado ao serializador não consegue encontrar um tipo gerenciado correspondente.

- ou - O obj (ou um membro aninhado de obj) contém uma propriedade "__type" que indica um tipo personalizado, mas o resultado da desserialização da cadeia de caracteres JSON correspondente não pode ser atribuído ao tipo de destino esperado.

- ou - O obj (ou um membro aninhado de obj) contém uma propriedade "__type" que indica Object ou um tipo que não pode ser instanciado (por exemplo, um tipo abstrato ou uma interface).

- ou - Foi feita uma tentativa de converter obj em um tipo gerenciado semelhante a uma matriz, que não tem suporte para uso como um destino de desserialização.

- ou - Não é possível converter obj em T.

obj é um tipo de dicionário e um valor de chave que não é uma cadeia de caracteres foi encontrado.

- ou - obj inclui definições de membro que não estão disponíveis no tipo T.

Exemplos

O exemplo a seguir mostra como usar o ConvertToType método para obter um ListItem objeto de um valor no dicionário que é passado para o conversor. Este exemplo de código faz parte de um exemplo maior fornecido para a JavaScriptSerializer classe.

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

Comentários

O ConvertToType método tenta converter a instância de objeto representada por obj uma instância do tipo T. Durante essa conversão, não há garantia de que a igualdade de referência de objeto seja mantida. Portanto, você não pode assumir isso obj e T se referir ao mesmo objeto.

ConvertToType é destinado a ser usado se você implementar uma classe que deriva de JavaScriptConverter. O código do conversor deve ser capaz de obter um valor que esteja no dicionário que o serializador passa para ele e converter esse valor em uma instância do tipo T. Em vez de implementar novamente o código de conversão personalizado para executar essa tarefa, você pode chamar o ConvertToType método do código do conversor.

Aplica-se a