JavaScriptSerializer.ConvertToType Metodo

Definizione

Overload

Nome Descrizione
ConvertToType(Object, Type)

Converte l'oggetto specificato nel tipo specificato.

ConvertToType<T>(Object)

Converte l'oggetto specificato nel tipo specificato.

ConvertToType(Object, Type)

Converte l'oggetto specificato nel tipo specificato.

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

Parametri

obj
Object

Oggetto da convertire.

targetType
Type

Tipo in cui convertire l'oggetto.

Valori restituiti

Stringa JSON serializzata.

Eccezioni

La stringa in formato JSON risultante supera il valore di MaxJsonLength.

oppure

obj contiene un riferimento circolare. Un riferimento circolare si verifica quando un oggetto figlio ha un riferimento a un oggetto padre e l'oggetto padre ha un riferimento all'oggetto figlio.

È stato superato il limite di ricorsione definito da RecursionLimit .

Commenti

Quando l'istanza JavaScriptSerializer serializza un tipo per il quale viene registrato un convertitore personalizzato, il serializzatore chiama il Serialize metodo per ottenere il dizionario di coppie nome/valore che verranno convertite in una stringa in formato JSON.

Il Serialize metodo può anche generare eccezioni se l'oggetto grafico è troppo complesso o se le istanze registrate di hanno causato la ricorsione del JavaScriptConverter convertitore.

Si applica a

ConvertToType<T>(Object)

Converte l'oggetto specificato nel tipo specificato.

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

Parametri di tipo

T

Tipo in cui obj verrà convertito.

Parametri

obj
Object

Oggetto da convertire.

Valori restituiti

T

Oggetto convertito nel tipo di destinazione.

Eccezioni

obj (o un membro annidato di obj) contiene una proprietà "__type" che indica un tipo personalizzato, ma il resolver di tipo associato al serializzatore non riesce a trovare un tipo gestito corrispondente.

oppure

obj (o un membro annidato di obj) contiene una proprietà "__type" che indica un tipo personalizzato, ma il risultato della deserializzazione della stringa JSON corrispondente non può essere assegnato al tipo di destinazione previsto.

oppure

obj (o un membro annidato di obj) contiene una proprietà "__type" che indica Object o un tipo non crea un'istanza, ad esempio un tipo astratto o un'interfaccia.

oppure

È stato effettuato un tentativo di conversione obj in un tipo gestito simile a una matrice, che non è supportato per l'uso come destinazione di deserializzazione.

oppure

Non è possibile eseguire la conversione obj in T.

obj è un tipo di dizionario e è stato rilevato un valore di chiave non stringa.

oppure

obj include le definizioni dei membri che non sono disponibili nel tipo T.

Esempio

Nell'esempio seguente viene illustrato come utilizzare il ConvertToType metodo per ottenere un ListItem oggetto da un valore nel dizionario passato al convertitore. Questo esempio di codice fa parte di un esempio più ampio fornito per la 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

Commenti

Il ConvertToType metodo tenta di convertire l'istanza dell'oggetto rappresentata da obj in un'istanza di tipo T. Durante questa conversione non esiste alcuna garanzia che venga mantenuta l'uguaglianza dei riferimenti a oggetti. Pertanto, non è possibile presupporre che obj e T fare riferimento allo stesso oggetto.

ConvertToType deve essere usato se si implementa una classe che deriva da JavaScriptConverter. Il codice del convertitore deve essere in grado di accettare un valore presente nel dizionario passato dal serializzatore e quindi convertire tale valore in un'istanza di tipo T. Anziché implementare nuovamente il codice di conversione personalizzato per eseguire questa attività, è possibile chiamare il ConvertToType metodo dal codice del convertitore.

Si applica a