JavaScriptSerializer.Deserialize Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Sobrecargas
Deserialize(String, Type) |
Converte uma cadeia de caracteres formatada em JSON para um objeto do tipo especificado. |
Deserialize<T>(String) |
Converte a cadeia de caracteres JSON especificada em um objeto do tipo |
Deserialize(String, Type)
Converte uma cadeia de caracteres formatada em JSON para 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
ultrapassa o valor de MaxJsonLength.
- ou - O limite de recursão definido pelo 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 que não é uma 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 tipo que está associado ao serializador não consegue 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 Object ou um tipo que não pode ser instanciado (por exemplo, um tipo abstrato ou uma interface).
- ou - Foi feita uma tentativa de converter uma matriz JSON em um tipo gerenciado semelhante a uma matriz que não é compatível 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 que 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 comprimento de input
ultrapassa o valor de MaxJsonLength.
- ou - O limite de recursão definido pelo 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 que não é uma 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 tipo associado ao serializador não consegue 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 Object ou um tipo que não pode ser instanciado (por exemplo, um tipo abstrato ou uma interface).
- ou - Foi feita uma tentativa de converter uma matriz JSON em um tipo gerenciado semelhante a uma matriz que não é compatível 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 primeiro usar o DeserializeObject método para obter um grafo de objeto e, em seguida, tentar converter o resultado para o tipo 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.