Serialização com Json.NET
Por Claudio Ulisse19/05/2008 – 10:22
Json é um padrão leve de formatação em Javascript para troca de dados muito utilizado por desenvolvedores de aplicações tipicas de web 2.0. Suportado nativamente por PHP,Python e outras linguagens, o .NET, infelizmente, ficou atrás nessa historia e deixou o desenvolvimento de suporte ao Json a iniciativas pessoais, demonstrando assim pouca sensibilidade para palicações leve web 2.0.
Uma dessas iniciativas é o desenvolvimento de uma biblioteca, a Json.NET por James Newton, muito interessante e simples de usar porque herda muitas das classes que já existiam no .NET, adicionando só os elementos para tratamento do formato Json.
Algumas caraterísticas dessa biblioteca são:
Um exemplo de serialização muito simples é esse:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Utilities;
using System.IO;
namespace testeJson
{
[JsonObject(MemberSerialization.OptIn)]
public class Pessoa{
[NonSerialized]
public string nome;
[JsonProperty]
public string sobrenome;
[JsonProperty]
public int idade;
public int Idade
{
get { return idade; }
set { idade = value; }
}
}
class Program
{
static void Main(string[] args)
{
var p = new Pessoa();
p.idade = 23;
p.nome = “Claudio”;
p.sobrenome = “Ulisse”;
//serializando para json
try
{
var jsonstring = JavaScriptConvert.SerializeObject(p);
Console.WriteLine(jsonstring);
/*serializando para txt
JsonSerializer serializer = new JsonSerializer();
StreamWriter fileStream = new StreamWriter(@”json.txt”);
JsonWriter jwriter = new JsonTextWriter(fileStream);
serializer.Serialize(jwriter, p);
*/
var p2 = new Pessoa();
p2 = (Pessoa)JavaScriptConvert.DeserializeObject(jsonstring, typeof(Pessoa));
}
catch (JsonSerializationException ex) {
Console.Error.WriteLine(ex.Message);
}
}
}
}
O exemplo é simples mas rende a idéia do meu interesse para essa biblioteca. Esses dias testarei o suporte para Linq, aí veremos se presta mesmo.

You must be logged in to post a comment.