JavaScriptSerializer.Deserialize Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Overload
Deserialize(String, Type) |
Converte una stringa in formato JSON in un oggetto del tipo specificato. |
Deserialize<T>(String) |
Converte la stringa JSON specificata in un oggetto di tipo |
Deserialize(String, Type)
Converte una stringa in formato JSON in un oggetto del tipo specificato.
public:
System::Object ^ Deserialize(System::String ^ input, Type ^ targetType);
public object Deserialize (string input, Type targetType);
member this.Deserialize : string * Type -> obj
Public Function Deserialize (input As String, targetType As Type) As Object
Parametri
- input
- String
Stringa JSON da deserializzare.
- targetType
- Type
Tipo dell'oggetto risultante.
Restituisce
Oggetto deserializzato.
Eccezioni
input
è null
.
La lunghezza di input
è maggiore del valore di MaxJsonLength.
-oppure-
È stato superato il limite di ricorsione definito da RecursionLimit.
-oppure-
input
contiene una sequenza di caratteri imprevista.
-oppure-
input
è un tipo di dizionario ed è stato rilevato un valore della chiave non-stringa.
-oppure-
input
include definizioni dei membri non disponibili nel tipo di destinazione.
input
contiene una proprietà "__type" che indica un tipo personalizzato, ma il resolver di tipi attualmente associato al serializzatore non è in grado di trovare un tipo gestito corrispondente.
-oppure-
input
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-
input
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 una matrice JSON in un tipo gestito simile a una matrice, non supportato per l'utilizzo come destinazione della deserializzazione JSON.
-oppure-
Non è possibile convertire input
nel tipo di destinazione.
Commenti
Questo metodo di deserializzazione non tenta di eseguire il cast della radice del grafico dell'oggetto in un tipo specifico, il modo in cui il Deserialize metodo esegue.
Si applica a
Deserialize<T>(String)
Converte la stringa JSON specificata in un oggetto di tipo T
.
public:
generic <typename T>
T Deserialize(System::String ^ input);
public T Deserialize<T> (string input);
member this.Deserialize : string -> 'T
Public Function Deserialize(Of T) (input As String) As T
Parametri di tipo
- T
Tipo dell'oggetto risultante.
Parametri
- input
- String
Stringa JSON da deserializzare.
Restituisce
Oggetto deserializzato.
Eccezioni
La lunghezza input
è superiore al valore di MaxJsonLength.
-oppure-
È stato superato il limite di ricorsione definito da RecursionLimit.
-oppure-
input
contiene una sequenza di caratteri imprevista.
-oppure-
input
è un tipo di dizionario ed è stato rilevato un valore della chiave non-stringa.
-oppure-
input
include definizioni dei membri non disponibili nel tipo T
.
input
è null
.
input
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-
input
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-
input
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 una matrice JSON in un tipo gestito simile a una matrice, non supportato per l'utilizzo come destinazione della deserializzazione JSON.
-oppure-
Non è possibile convertire input
in T
.
Esempio
L'esempio seguente illustra in modo semplice come serializzare e deserializzare gli oggetti dati.
using System;
using System.Collections.Generic;
using System.Web.UI;
using System.Web.Script.Serialization;
namespace ExampleApplication
{
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
var RegisteredUsers = new List<Person>();
RegisteredUsers.Add(new Person() { PersonID = 1, Name = "Bryon Hetrick", Registered = true });
RegisteredUsers.Add(new Person() { PersonID = 2, Name = "Nicole Wilcox", Registered = true });
RegisteredUsers.Add(new Person() { PersonID = 3, Name = "Adrian Martinson", Registered = false });
RegisteredUsers.Add(new Person() { PersonID = 4, Name = "Nora Osborn", Registered = false });
var serializer = new JavaScriptSerializer();
var serializedResult = serializer.Serialize(RegisteredUsers);
// Produces string value of:
// [
// {"PersonID":1,"Name":"Bryon Hetrick","Registered":true},
// {"PersonID":2,"Name":"Nicole Wilcox","Registered":true},
// {"PersonID":3,"Name":"Adrian Martinson","Registered":false},
// {"PersonID":4,"Name":"Nora Osborn","Registered":false}
// ]
var deserializedResult = serializer.Deserialize<List<Person>>(serializedResult);
// Produces List with 4 Person objects
}
}
}
Imports System.Web.Script.Serialization
Public Class _Default
Inherits Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
Dim RegisteredUsers As New List(Of Person)()
RegisteredUsers.Add(New Person With {.PersonID = 1, .Name = "Bryon Hetrick", .Registered = True})
RegisteredUsers.Add(New Person With {.PersonID = 2, .Name = "Nicole Wilcox", .Registered = True})
RegisteredUsers.Add(New Person With {.PersonID = 3, .Name = "Adrian Martinson", .Registered = False})
RegisteredUsers.Add(New Person With {.PersonID = 4, .Name = "Nora Osborn", .Registered = False})
Dim serializer As New JavaScriptSerializer()
Dim serializedResult = serializer.Serialize(RegisteredUsers)
' Produces string value of:
' [
' {"PersonID":1,"Name":"Bryon Hetrick","Registered":true},
' {"PersonID":2,"Name":"Nicole Wilcox","Registered":true},
' {"PersonID":3,"Name":"Adrian Martinson","Registered":false},
' {"PersonID":4,"Name":"Nora Osborn","Registered":false}
' ]
Dim deserializedResult = serializer.Deserialize(Of List(Of Person))(serializedResult)
' Produces List with 4 Person objects
End Sub
End Class
Richiede una classe denominata Person
, illustrata nell'esempio seguente.
namespace ExampleApplication
{
public class Person
{
public int PersonID { get; set; }
public string Name { get; set; }
public bool Registered { get; set; }
}
}
Public Class Person
Public Property PersonID As Integer
Public Property Name As String
Public Property Registered As Boolean
End Class
Commenti
Il Deserialize metodo equivale prima a usare il DeserializeObject metodo per ottenere un grafico oggetto e quindi provare a eseguire il cast del risultato per digitare T
.
Durante la deserializzazione, viene fatto riferimento al resolver di tipo corrente del serializzatore, che determina il tipo gestito da usare durante la conversione di elementi annidati all'interno di matrici e tipi di dizionario. Di conseguenza, il processo di deserializzazione esegue l'iterazione di tutti gli elementi annidati di input
. Per altre informazioni sui resolver di tipo, vedere la JavaScriptTypeResolver classe .