O formato JSON (javascript notation object) ficou muito conhecido nos últimos anos com o aumento das aplicações WEB. Hoje, ele é quase um estilo padrão para comunicação entre cliente e servidor, mesmo fora das Web Applications.
Nesse artigo veremos uma das formas que podemos usar para implementar os processos de Serialization e Deserialization com C# no Unity3D.
Mas primeiro…
Nesse tutorial levo em consideração que você já sabe o que é JSON e está apenas buscando ideias de como implementá-lo no Unity.
Vamos lá
Existem muitas formas de se realizar os processos acima citados, considerando desde criar na mão de acordo com a sua necessidade usando os próprios meios do Unity, embora esses sejam bem limitados ainda, ou ainda usando alguma biblioteca de terceiros. Aqui, usarei o último caso. Sendo assim, recomendo que baixem esse aquivo “https://gist.github.com/darktable/1411710” e adicionem ao seu projeto que será usado para testes.
Essa biblioteca trabalha com Coleções (Dictionary e List). Então, vamos ver como funciona cada processo.
Serialization
Na serialização vamos converter nossas coleções para uma string no formato de JSON.
Primeiro criaremos a Collection que será serializada:
public string Serialize() { IDictionary<object, object> dictionary = new Dictionary<object, object>(); dictionary.Add(“money”,9.5f); dictionary.Add(“lifes”,5); dictionary.Add(“name”, “Bilbo”); // para subobjetos adicionamos outra Collection List<string> weapons = new List<string>(); weapons.Add(“Sword”); weapons.Add(“Hamer”); weapons.Add(“Shield”); dictionary.Add(“weapons”, weapons); // aqui a mágica acontece string json = MiniJSON.JSON.Serialize(dictionary); }
O retorno da função acima seria algo como:
{ "money":9.5, "lifes":5, "name":"Bilbo", "weapons": [ "Sword", "Hamer", "Shield" ] }
Poderíamos, por exemplo, enviar essa informação para uma API REST que salva nossos dados em nuvens.
Deserialization
Agora faremos exatamente o contrário.
Imagine que recebemos a string acima direto do servidor e então converteremos para uma collection.
public ICollection<object,object> Deserialize(string json) { IDictionary<object,object> dictionary = MiniJSON.JSON.Deserialize(json) as Dictionary<object,object>(); return dictionary; }
Simples, não?
Agora você pode usar a coleção, lembrando de usar casts já que a coleção sempre vai retornar para o tipo object e temos floats, ints, string e até outras coleções.
É isso. Vou ficando por aqui. Até a próxima.
One thought on “Tutorial: Usando JSON no Unity3D com C#”