Serialização com Json.NET

Por Claudio Ulisse
19/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:

  • suporte LINQ to JSON
  • conversão JSON/XML
  • atributos para serialização em Json
  • 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.

    Creative Commons License
    Esta obra está licenciada sob uma Licença Creative Commons.