30-50% off hundreds of digital assets! WordPress themes, video, music and more 30-50% Off Go to Sale
Advertisement
  1. Code
  2. iOS
Code

Trabalhando Com JSON na Swift

by
Difficulty:BeginnerLength:MediumLanguages:

Portuguese (Português) translation by Erick Patrick (you can also view the original English article)

O formato de dados JSON é muito usado pela web moderna e é uma das formas mais comuns de transferir dados. Muitas APIs modernas, em particular serviços web RESTful, dão suporte ao formato JSON.

Nesse tutorial, mostraremos como trabalhar com o formato de dados JSON na Swift para iOS, tvOS, watchOS e OS X.

Pré-Requisitos

Esse tutorial requer que tenhamos pelo menos o Xcode 7, que inclui a versão 2 da linguagem Swift. Swift 2 introduziu um número importante de recursos que usaremos pelo tutorial, como manipulação de erro e a declaração guard.

1. O Que É JSON?

Como mencionado, JSON é um formato de dados muito usado, por exemplo, para comunicação entre clientes e servidores. É popular por sua usabilidade entre, virtualmente, qualquer plataforma móvel como iOS, Android, Windows Phone e navegadores web.

O trecho abaixo é um exemplo de formato de dados JSON. É ele que usaremos no tutorial.

Como emos, o formato JSON é muito fácil de entender. JSON é estruturado usando dois tipos de coleção: dicionários e vetores. Dicionários contém um ou mais pares de chave-valor e são cercados por chaves, {}. Vetores contém uma lista de itens ordenados e são cercados por colchetes, []. Quase toda linguagem de programação possuem esses tipos de coleção, e é por isso que JSON é suportado por quase todas elas.

A lista abaixo é dos tipos de dados suportados pelo objeto JSON:

  • Cadeias de caracteres
  • Números (inteiros, pontos flutuantes, etc)
  • Booleanos
  • Vetores
  • Dicionários

Um dos motivos de JSON ser tão popular se dá por ser fácil de ler por humanos e também facilmente analisado e serializado por máquinas. Analisar e serializar se dá quando máquinas pegam os dados brutos e tornam eles em objetos usáveis pela aplicação.

2. Lendo Dados JSON

Passo 1: Criando um Playgraound

Inicie o Xcode e crie um novo playground. Dê-o um nome e configure a Platform para iOS.

Passo 2: Adicionando Dados JSON

Abramos o Navigator à esquerda e expandamos o playground do JSON. Com clique do botão direito na pasta Resources, selecionemos New File.

Add JSON Data

Nomeemos o arquivo de data.json e populemo-no com o JSON abaixo.

Passo 3: Obtendo Dados

Agora que temos um conhecimento básico do que é o formato JSON, é hora de trabalhar com ele na Swift. Removamos o conteúdo do playground e adicionemos as três linhas de código abaixo.

Com esse código, obtemos uma referência ao arquivo JSON adicionado ao playground, e obtemos seu conteúdo como dados brutos. Notemos que a URL criada aqui é local ao arquivo em nosso computador. Ela poderia ser uma URL de um serviço web ou qualquer outra URL que precisarmos.

Também é importante entender que dados brutos de um objeto JSON não precisam ser obtidos assim. A única parte essencial é o objeto bruto NSData, que pode vir de uma URL, como visto acima, de uma API ou de vários outros recursos.

Passo 4: Analisando Dados

O próximo passo é analisar e serializar os dados em um objeto que possamos usar. Felizmente, no iOS e OS X, a classe NSJSONSerialization da Foundation lida com todo o trabalho duro da análise e serialização para nós. Adicionemos o trecho abaixo no playground.

Primeiro cercamos nossa lógica com uma declaração do-catch, porque a serialização dos JSON pode lançar um erro. Depois, invocamos JSONObjectWithData(_:options:) da classe NSJSONSerialization, passando o objeto NSData e algumas opções. A opção que pode ser passada são definidas pela estrutura NSJSONReadingOptions:

  • AllowFragments - Isso permite objetos no primeiro nível de dados do JSON, que não sejam vetores ou dicionários, serem lidos. Nos dados JSON usados nesse tutorial, inclui tanto os valores dataTitle e swiftVersion.
  • MutableLeaves - Essa opção permite cadeias de caracteres lidas de dados JSON serem automaticamente convertidas em instâncias de NSMutableString. Essa opção é mais relevante para desenvolvimento em Objective-C. Na Swift, podemos ignorar essa opção já que cadeias de caracteres são tipos básicos de dados e automaticamente mutáveis quando definidos com var.
  • MutableContainers - Isso permite vetores e dicionários lidos de dados JSON também serem mutáveis. Como na opção MutableLeaves, na Swift, usar var ao atribuir um vetor/dicionário à variável, automaticamente a torna mutável.

Por último, verificamos se o objeto serializado é do tipo [String: AnyObject] e se sim, invocamos readJSONObject(_:). Vejamos o método readJSONObject(_:).

Passo 5: Trabalhando com Dados

Após os dados JSON coletados serem analisados e serializados, podemos interagir com eles como se fosse um dicionário qualquer. Adicionemos a função abaixo ao playground, acima da declaração do-catch:

Como vemos, podemos interagir com o JSON serializado da mesma forma que um dicionário ou vetor padrão. A função readJSONObject(_:) acima erve como um exemplo de como extrair informação de um objeto JSON serializado. Notemos que incluímos uma declaração switch na função apenas para separas as cadeias de caracteres no retorno do playground.

Após o playground executar o código, devemos ver um resultado na barra lateral, semelhante ao abaixo.

The Playground Output

Parabéns! Agora sabemos como buscar dados JSON, serializá-los e usá-los como um dicionário no código Swift. Como vemos, o processo é bem simples, graças a API NSJSONSerialization, que faz a maior parte do trabalho por nós.

3. Trabalhando com Dados JSON

Além de ler dados JSON, que recebemos de uma fonte online ou local, é importante saber como criar nossos próprios dados JSON. Se ele será salvo localmente ou, mais comumente, em um serviço web, o processo é tão simples quanto ler dados JSON. Vejamos o exemplo abaixo:

Ao criar nosso próprio JSON a partir de um objeto, é melhor usar primeiro o método isValidJSONObject(_:) para verificar se o objeto pode ser convertido em um objeto JSON.

Após a verificação, invocamos dataWithJSONObject(_:), que retorna um objeto NSData se bem sucedido. Como já verificamos se o objeto é válido ou não, o bloco catch de erro aqui não é tão importante quanto antes, mas pode ser invocado caso algum erro interno de API ocorra ao criar o dado bruto.

A opção PrettyPrinted usada no exemplo é a única opção disponível para usar com esse método e, quando usada, apenas adiciona mais espaço em branco ao JSON para facilitar a leitura.

O objeto NSdata retornada pode ser usado como quisermos. Podemos salvá-lo em localmente ou enviar para um serviço web.

Conclusão

Agora estamos confortáveis em trabalhar com JSON na Swift. É claro que a estrela do jogo é a classe NSJSONSerialization, com a ajuda de algumas declarações guard e do-catch. Como vimos, trabalhar com dados JSON é bem fácil. Após os dados JSON serem analisados e serializados, podemos interagir com eles como fossem um objeto normal.

Como sempre, deixe seus comentários e feedbacks nos seção de comentários abaixo.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.