Leia o arquivo JSON em Scala

Leia o arquivo JSON em Scala
“A notação de objeto JavaScript, ou JSON, é uma linguagem de codificação. O maior substituto para XML é um formato de intercâmbio de dados completamente separado. O processo de analisar um arquivo json e obter os dados essenciais é abordado neste guia. JSON é um formato simples de troca de dados que é simples para robôs analisar e gerar dados, bem como para os humanos lerem e escrever. É um formato de texto específico que não é específico para o idioma. Existem várias bibliotecas disponíveis que podem analisar o JSON, tornando um desafio escolher o melhor para nossos serviços Scala. Circe, Circe Optics e Lift-Json, que achamos ser a maior escolha por causa de quão bem ele lida com JSON.”

Exemplo # 1: Parsing JSON com Circe em Scala no Ubuntu 20.04

O pacote Circe Scala facilita o trabalho com o JSON, simplificando a decodificação do JSON Strings em objetos Scala ou converte objetos Scala para JSON. Precisamos de menos linhas de código para interagir com JSON em Scala e graças à geração automática de codificadores e decodificadores de objetos da biblioteca.

Nesse caso, importamos o pacote Circe e o DerivedEcoder, que nos permite analisar uma corda JSON, dependendo da classe de caso "animal". A classe de caso representa o objeto "readjson" e o objeto é chamado de definição principal. Definimos a variável "json_value", que é inicializada com os dados do formato JSON. A função implícita do decodificador, DerivedEcoder, da classe de caso de Circe é o que precisamos fornecer neste exemplo. O erro ocorrerá se não oferecermos o implícito. Sob o capô, a implementação do analisador.decodificar chamado de classe "animal" e parâmetro atribuído "json_value". Em seguida, temos um identificador correspondente que retornará um dos dois casos.

Decodificamos os dados JSON no Scala usando o pacote Circe Scala da seguinte maneira:

Exemplo # 2: Parsing JSON Array em Scala no Ubuntu 20.04

Uma matriz pode ser usada para iniciar o JSON. Então, vamos usar o Circe para tentar analisar isso.

Assemelha -se ao código anterior na aparência. Primeiro, importamos dois pacotes Circe. Em seguida, definimos a classe de caso "frutas" e contém um parâmetro, "f_name". Estabelecemos o "ReadArray" para a definição principal do método. Em seguida, declaramos a variável "inputjson" para representar os dados JSON. No entanto, você deve ter notado algumas coisas. Somente o decodificador de frutas da classe de caso precisa ser criado. Lista [frutas] não exige que um decodificador seja criado. Isso é para que o Circe possa decodificar convenientemente a lista [A].

Um tipo genérico é indicado pela inlist [a] de qualquer tipo. Circe codifica e decodifica cada tipo separadamente. A variável "resultado" corresponde ao caso, que retornará o caso certo sobre o sucesso de analisar o JSON para Scala ou o caso esquerdo na falha.

Exemplo # 3: Parsing JSON String em Scala no Ubuntu 20.04

O pacote Circe-Core contém o objeto Cursor, disponível em três formas diferentes: cursor, hcursor e acursor. Com isso, os dados podem ser extraídos ou modificados dentro da estrutura JSON. Vamos decodificar no exemplo seguinte usando um tipo de dados algébricos. Você pode compará -lo à enumeração se não estiver familiarizado com isso.


Com a importação dos pacotes Scala Circe, iniciamos a implementação do código. Definimos três classes de caso, "futebol", "hóquei" e "tênis", que são estendidas com o objeto "nível". Além disso, geramos a classe de caso "erro" para manuseio de exceções. Então, representamos o objeto "nível". Utilizamos a palavra -chave "qualquer", que leva o nível e o erro dentro dela. O "qualquer" tem dois filhos, da direita e da esquerda, que são chamados com a declaração do caso. O caso certo será executado com sucesso e o caso esquerdo será executado na falha.

Estabelecemos outro objeto como um "decodificador" para a implementação do código primário. Aqui, criamos uma variável "JSON" e atribuímos os dados JSON, que contém três strings. A variável implícita é definida como "RatingDecoder", que é chamada de objeto "decodificador" e passa o [erro, nivelado]. Invocamos o objeto Cursor "Hcursor", que modificará a estrutura JSON. Sob a implementação da função Parse, analisamos os dados JSON. O JSON será analisado e gerado em Scala quando combinado com as instruções de caso especificadas.

Você pode ver que o decodificador [[erro, nível]] parece atender a todos os requisitos. O código acima, quando executado, produz os resultados esperados.

Exemplo # 4: Parsing JSON com Lift-Json Library em Scala no Ubuntu 20.04

Use uma combinação das técnicas da biblioteca de elevador. O exemplo a seguir demonstra como desserializar a string jSonstring em muitos objetos enquanto exibe cada objeto, pois é desserializado da seguinte maneira:


Depois disso, definimos uma classe “Securgência de funcionários”. A classe de caso contém alguns atributos com os tipos de dados especificados. Em seguida, criamos o "parsejsonArray" e definimos uma string chamada JSonstring que contém alguns dados JSON de amostra. Depois disso, declaramos a variável "JSON", onde invocamos a função de análise. A função Parse converte essa string em um objeto JValue com o nome JSON.

O método \\ é então usado para pesquisar os dados JSON para todos os elementos com o nome "email". Esta sintaxe é boa, pois corresponde às técnicas do tipo XPath empregadas na biblioteca Scala XML. O loop for pesquisa repetidamente itens, extrai cada elemento como um objeto "email" e depois imprime o conteúdo dos dados desse objeto. Passamos alguns dos campos para a declaração Println que só será analisada no Scala.

A saída Scala a seguir é obtida após a execução do programa para analisar dados JSON.

Conclusão

Duas abordagens foram apresentadas neste artigo: Um dos métodos Circe Scala usou, e o outro usou um lift-json bem conhecido para analisar o texto JSON. O utilitário Circe Scala facilita a interação com o JSON através do uso de uma API fácil de usar. Sempre podemos criar um codificador ou decodificador personalizado, ou podemos usar o código de extração de campo diretamente para alterar o comportamento do sistema. E percebemos que, devido a suas características e facilidade de desenvolvimento, ambos são sempre favorecidos ao analisar.