.NET

2 mar, 2010

Utilizando a classe JavascriptSerializer .Net

Publicidade

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