Fornece a funcionalidade de serialização e desserialização de
Objetos para Json e
vice-versa.
Namespace: System.Web.Script.Serialization
A classe JavaScriptSerializer é usada internamente pela
camada de comunicação assíncrona para serializar e desserializar os
dados passados entre o navegador e o servidor Web. Não é possível
acessar essa instância do serializador. No entanto, essa classe expõe
uma API Público. Portanto, você pode usar a classe quando você deseja
trabalhar com JSON (JavaScript Objeto Notation) no código gerenciado.
Para serializar um objeto, use o método Serialize. Para
desserializar um JSON Cadeia de Caracteres, use o Deserialize<(Of
<(T>)>) ou DeserializeObject métodos. Para serializar e
desserializar tipos que não são suportados nativamente pelo
JavaScriptSerializer, implemente conversores Personalizars, usando a
classe JavaScriptConverter. Em seguida, registrar os conversores usando o
método RegisterConverters.
Mapeamento entre tipos gerenciados e JSON
A tabela a seguir mostra o mapeamento entre tipos gerenciados e
JSON para o processo de serialização. Esses tipos gerenciados são
suportados nativamente pelo JavaScriptSerializer. Quando você é
desserialização de uma Cadeia de Caracteres JSON para um tipo
gerenciado, o mesmo mapeamento se aplica. No entanto, a desserialização
pode ser assimétrica; nem todos os tipos gerenciados pode ser serializados
podem ser desserializados de JSON.
Tipo gerenciado | Equivalente JSON |
---|---|
String (Codificação UTF-8 somente). | String |
Char | String |
Simples caractere nulo (por exemplo, \0) | Null |
Boolean | Booleano – Representado em JSON como true ou false |
null Nothing (uma referência nula (referências a objetos e tipos de valor Nullable). |
Um valor de Cadeia de Caracteres de nulo |
DBNull | Um valor de Cadeia de Caracteres de nulo |
Tipos primitivos de numéricos (ou numérico-compatível): Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, Double e Single. A representação de cadeia de caracteres de invariável de cultura é usada. |
Número |
DateTime | Objeto de data, representado em JSON como ” \/Date (número de tiques) \ / “.O número de tiques é um valor longo positivo ou negativo que indica o número de tiques (milissegundos) que se passaram desde a meia-noite 01 de janeiro de 1970 UTC. O valor de data máxima com suporte é MaxValue (31/12/9999 11:59:59 PM) e o valor de data mínima com suporte é MinValue (1/1/0001 12: 00: 00 AM). |
Enumerações do tipo inteiro | O valor de enumeração equivalente inteiro |
Tipos que implementar IEnumerable ou System.Collections.Generic.IEnumerable(Of T) que também não são implementações de IDictionary ou System.Collections.Generic.IDictionary(Of TKey, TValue).Isso inclui tipos, como Array,ArrayList e List |
Matriz que usa a sintaxe de matriz JSON |
Tipos que implementam IDictionary ou System.Collections.Generic.IDictionary<(Of <(TKey, TValue>)>). Isso inclui tipos, como Dictionary<(Of <(TKey, TValue>)>) e Hashtable. |
Objeto JavaScript que usa a sintaxe do dicionário JSON |
Concretos (não abstrata) tipos Personalizars que têm propriedades de instância Público que possuem obter acessadores ou campos de instância Público. Anotação que público Gravar – somente propriedades, propriedade pública ou atributos de campo público marcado com ScriptIgnoreAttribute e públicas Propriedades indexadas nesses tipos são ignoradas. |
Objeto de JavaScript que usa a sintaxe do dicionário JSON. Uma propriedade de metadados especial chamada “__type” é incluída para garantir a desserialização correta.Verifique se que as propriedades de instância Público tem obter e definir acessadores para garantir a desserialização correta. |
Guid | Representação de Cadeia de Caracteres de um GUID |
Uri | Cadeia de Caracteres de representação do valor retornado de GetComponents |
Exemplos:
Behind Code:
Resultado:
Utilizando IList
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim serializar As JavaScriptSerializer = New JavaScriptSerializer()
Dim pessoa As IList(Of Pessoa) = New List(Of Pessoa)
For x As Integer = 0 To 5
Dim p As New Pessoa
p.Idade = 10
p.Nome = "Imasters " & x
pessoa.Add(p)
Next
TextBox1.Text = serializar.Serialize(pessoa).ToString()
End Sub
Public Class Pessoa
Private _idade As String
Private _nome As String
Public Property Idade() As String
Get
Return _idade
End Get
Set(ByVal value As String)
_idade = value
End Set
End Property
Public Property Nome() As String
Get
Return _nome
End Get
Set(ByVal value As String)
_nome = value
End Set
End Property
'*** Construtor
'Public Sub New(ByVal nome, ByVal idade)
' _idade = idade
' _nome = nome
'End Sub
End Class