JavaScriptSerializer.Deserialize Método

Definição

Sobrecargas

Nome Description
Deserialize(String, Type)

Converte uma cadeia de caracteres formatada em JSON em um objeto do tipo especificado.

Deserialize<T>(String)

Converte a cadeia de caracteres JSON especificada em um objeto do tipo T.

Deserialize(String, Type)

Converte uma cadeia de caracteres formatada em JSON em um objeto do tipo especificado.

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

Parâmetros

input
String

A cadeia de caracteres JSON a ser desserializada.

targetType
Type

O tipo do objeto resultante.

Retornos

O objeto desserializado.

Exceções

input é null.

O comprimento de input excede o valor de MaxJsonLength.

-ou-

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

-ou-

input contém uma sequência de caracteres inesperada.

-ou-

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

-ou-

input inclui definições de membro que não estão disponíveis no tipo de destino.

input contém uma propriedade "__type" que indica um tipo personalizado, mas o resolvedor de tipos que está atualmente associado ao serializador não pode encontrar um tipo gerenciado correspondente.

-ou-

input 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-

input contém uma propriedade "__type" que indica um Object tipo não instanciável (por exemplo, um tipo abstrato ou uma interface).

-ou-

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

-ou-

Não é possível converter input para o tipo de destino.

Comentários

Esse método de desserialização não tenta converter a raiz do grafo de objeto em um tipo específico, da maneira como o Deserialize método faz.

Aplica-se a

Deserialize<T>(String)

Converte a cadeia de caracteres JSON especificada em um objeto do 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

Parâmetros de tipo

T

O tipo do objeto resultante.

Parâmetros

input
String

A cadeia de caracteres JSON a ser desserializada.

Retornos

T

O objeto desserializado.

Exceções

O input comprimento excede o valor de MaxJsonLength.

-ou-

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

-ou-

input contém uma sequência de caracteres inesperada.

-ou-

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

-ou-

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

input é null.

input contém uma propriedade "__type" que indica um tipo personalizado, mas o resolvedor de tipos associado ao serializador não pode encontrar um tipo gerenciado correspondente.

-ou-

input 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-

input contém uma propriedade "__type" que indica ou Object um tipo não instanciável (por exemplo, um tipo abstrato ou uma interface).

-ou-

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

-ou-

Não é possível converter input em T.

Exemplos

O exemplo a seguir fornece uma ilustração simples de como serializar e desserializar objetos de dados.

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

Ele requer uma classe nomeada Person, que é mostrada no exemplo a seguir.

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

Comentários

O Deserialize método é equivalente a usar primeiro o DeserializeObject método para obter um grafo de objeto e, em seguida, tentar converter o resultado para digitar T.

Durante a desserialização, o resolvedor de tipo atual do serializador é referenciado, o que determina o tipo gerenciado a ser usado ao converter elementos aninhados dentro de matrizes e tipos de dicionário. Como resultado, o processo de desserialização itera por todos os elementos aninhados de input. Para obter mais informações sobre resolvedores de tipo, consulte a JavaScriptTypeResolver classe.

Aplica-se a