JavaScriptSerializer.Deserialize Metodo

Definizione

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 T.

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

T

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 .

Si applica a