Condividi tramite


JavaScriptSerializer.ConvertToType Metodo

Definizione

Overload

ConvertToType(Object, Type)

Converte l'oggetto indicato nel tipo specificato.

ConvertToType<T>(Object)

Converte l'oggetto specificato nel tipo specificato.

ConvertToType(Object, Type)

Converte l'oggetto indicato 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.

Restituisce

Object

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 cui viene registrato un convertitore personalizzato, il serializzatore chiama il metodo per ottenere il Serialize dizionario delle coppie nome/valore che verranno convertite in una stringa formattata JSON.

Il Serialize metodo può anche generare eccezioni se il grafico dell'oggetto è troppo complesso o se le istanze registrate di JavaScriptConverter hanno causato la ricorsione del 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 nel quale obj verrà convertito.

Parametri

obj
Object

Oggetto da convertire.

Restituisce

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 tipi 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 istanziabile, quale ad esempio un tipo astratto o un'interfaccia.

-oppure- Si è tentato di convertire obj in un tipo gestito simile a una matrice, non supportato per l'utilizzo come destinazione della deserializzazione.

-oppure- Non è possibile convertire obj in T.

obj è un tipo di dizionario ed è stato rilevato un valore della chiave non-stringa.

-oppure- obj include definizioni dei membri non disponibili nel tipo T.

Esempio

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